mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2025-01-24 09:13:20 -05:00
ipv6: bool/const conversions phase2
Mostly bool conversions, some inline removals and const additions. Signed-off-by: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
32e9072b92
commit
a50feda546
17 changed files with 131 additions and 130 deletions
|
@ -131,9 +131,9 @@ extern int ipv6_sock_mc_join(struct sock *sk, int ifindex,
|
||||||
extern int ipv6_sock_mc_drop(struct sock *sk, int ifindex,
|
extern int ipv6_sock_mc_drop(struct sock *sk, int ifindex,
|
||||||
const struct in6_addr *addr);
|
const struct in6_addr *addr);
|
||||||
extern void ipv6_sock_mc_close(struct sock *sk);
|
extern void ipv6_sock_mc_close(struct sock *sk);
|
||||||
extern int inet6_mc_check(struct sock *sk,
|
extern bool inet6_mc_check(struct sock *sk,
|
||||||
const struct in6_addr *mc_addr,
|
const struct in6_addr *mc_addr,
|
||||||
const struct in6_addr *src_addr);
|
const struct in6_addr *src_addr);
|
||||||
|
|
||||||
extern int ipv6_dev_mc_inc(struct net_device *dev, const struct in6_addr *addr);
|
extern int ipv6_dev_mc_inc(struct net_device *dev, const struct in6_addr *addr);
|
||||||
extern int __ipv6_dev_mc_dec(struct inet6_dev *idev, const struct in6_addr *addr);
|
extern int __ipv6_dev_mc_dec(struct inet6_dev *idev, const struct in6_addr *addr);
|
||||||
|
@ -146,10 +146,10 @@ extern void ipv6_mc_init_dev(struct inet6_dev *idev);
|
||||||
extern void ipv6_mc_destroy_dev(struct inet6_dev *idev);
|
extern void ipv6_mc_destroy_dev(struct inet6_dev *idev);
|
||||||
extern void addrconf_dad_failure(struct inet6_ifaddr *ifp);
|
extern void addrconf_dad_failure(struct inet6_ifaddr *ifp);
|
||||||
|
|
||||||
extern int ipv6_chk_mcast_addr(struct net_device *dev,
|
extern bool ipv6_chk_mcast_addr(struct net_device *dev,
|
||||||
const struct in6_addr *group,
|
const struct in6_addr *group,
|
||||||
const struct in6_addr *src_addr);
|
const struct in6_addr *src_addr);
|
||||||
extern int ipv6_is_mld(struct sk_buff *skb, int nexthdr);
|
extern bool ipv6_is_mld(struct sk_buff *skb, int nexthdr);
|
||||||
|
|
||||||
extern void addrconf_prefix_rcv(struct net_device *dev,
|
extern void addrconf_prefix_rcv(struct net_device *dev,
|
||||||
u8 *opt, int len, bool sllao);
|
u8 *opt, int len, bool sllao);
|
||||||
|
@ -163,8 +163,8 @@ extern void ipv6_sock_ac_close(struct sock *sk);
|
||||||
|
|
||||||
extern int ipv6_dev_ac_inc(struct net_device *dev, const struct in6_addr *addr);
|
extern int ipv6_dev_ac_inc(struct net_device *dev, const struct in6_addr *addr);
|
||||||
extern int __ipv6_dev_ac_dec(struct inet6_dev *idev, const struct in6_addr *addr);
|
extern int __ipv6_dev_ac_dec(struct inet6_dev *idev, const struct in6_addr *addr);
|
||||||
extern int ipv6_chk_acast_addr(struct net *net, struct net_device *dev,
|
extern bool ipv6_chk_acast_addr(struct net *net, struct net_device *dev,
|
||||||
const struct in6_addr *addr);
|
const struct in6_addr *addr);
|
||||||
|
|
||||||
|
|
||||||
/* Device notifier */
|
/* Device notifier */
|
||||||
|
|
|
@ -175,7 +175,7 @@ static inline void ip6_dst_store(struct sock *sk, struct dst_entry *dst,
|
||||||
spin_unlock(&sk->sk_dst_lock);
|
spin_unlock(&sk->sk_dst_lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int ipv6_unicast_destination(struct sk_buff *skb)
|
static inline bool ipv6_unicast_destination(const struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
struct rt6_info *rt = (struct rt6_info *) skb_dst(skb);
|
struct rt6_info *rt = (struct rt6_info *) skb_dst(skb);
|
||||||
|
|
||||||
|
|
|
@ -559,7 +559,7 @@ extern void ipv6_push_frag_opts(struct sk_buff *skb,
|
||||||
extern int ipv6_skip_exthdr(const struct sk_buff *, int start,
|
extern int ipv6_skip_exthdr(const struct sk_buff *, int start,
|
||||||
u8 *nexthdrp, __be16 *frag_offp);
|
u8 *nexthdrp, __be16 *frag_offp);
|
||||||
|
|
||||||
extern int ipv6_ext_hdr(u8 nexthdr);
|
extern bool ipv6_ext_hdr(u8 nexthdr);
|
||||||
|
|
||||||
extern int ipv6_find_tlv(struct sk_buff *skb, int offset, int type);
|
extern int ipv6_find_tlv(struct sk_buff *skb, int offset, int type);
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
|
|
||||||
void raw6_icmp_error(struct sk_buff *, int nexthdr,
|
void raw6_icmp_error(struct sk_buff *, int nexthdr,
|
||||||
u8 type, u8 code, int inner_offset, __be32);
|
u8 type, u8 code, int inner_offset, __be32);
|
||||||
int raw6_local_deliver(struct sk_buff *, int);
|
bool raw6_local_deliver(struct sk_buff *, int);
|
||||||
|
|
||||||
extern int rawv6_rcv(struct sock *sk,
|
extern int rawv6_rcv(struct sock *sk,
|
||||||
struct sk_buff *skb);
|
struct sk_buff *skb);
|
||||||
|
|
|
@ -129,7 +129,7 @@ static void ip6addrlbl_free_rcu(struct rcu_head *h)
|
||||||
ip6addrlbl_free(container_of(h, struct ip6addrlbl_entry, rcu));
|
ip6addrlbl_free(container_of(h, struct ip6addrlbl_entry, rcu));
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int ip6addrlbl_hold(struct ip6addrlbl_entry *p)
|
static bool ip6addrlbl_hold(struct ip6addrlbl_entry *p)
|
||||||
{
|
{
|
||||||
return atomic_inc_not_zero(&p->refcnt);
|
return atomic_inc_not_zero(&p->refcnt);
|
||||||
}
|
}
|
||||||
|
@ -141,20 +141,20 @@ static inline void ip6addrlbl_put(struct ip6addrlbl_entry *p)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Find label */
|
/* Find label */
|
||||||
static int __ip6addrlbl_match(struct net *net,
|
static bool __ip6addrlbl_match(struct net *net,
|
||||||
struct ip6addrlbl_entry *p,
|
const struct ip6addrlbl_entry *p,
|
||||||
const struct in6_addr *addr,
|
const struct in6_addr *addr,
|
||||||
int addrtype, int ifindex)
|
int addrtype, int ifindex)
|
||||||
{
|
{
|
||||||
if (!net_eq(ip6addrlbl_net(p), net))
|
if (!net_eq(ip6addrlbl_net(p), net))
|
||||||
return 0;
|
return false;
|
||||||
if (p->ifindex && p->ifindex != ifindex)
|
if (p->ifindex && p->ifindex != ifindex)
|
||||||
return 0;
|
return false;
|
||||||
if (p->addrtype && p->addrtype != addrtype)
|
if (p->addrtype && p->addrtype != addrtype)
|
||||||
return 0;
|
return false;
|
||||||
if (!ipv6_prefix_equal(addr, &p->prefix, p->prefixlen))
|
if (!ipv6_prefix_equal(addr, &p->prefix, p->prefixlen))
|
||||||
return 0;
|
return false;
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct ip6addrlbl_entry *__ipv6_addr_label(struct net *net,
|
static struct ip6addrlbl_entry *__ipv6_addr_label(struct net *net,
|
||||||
|
@ -456,8 +456,8 @@ static int ip6addrlbl_newdel(struct sk_buff *skb, struct nlmsghdr *nlh,
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void ip6addrlbl_putmsg(struct nlmsghdr *nlh,
|
static void ip6addrlbl_putmsg(struct nlmsghdr *nlh,
|
||||||
int prefixlen, int ifindex, u32 lseq)
|
int prefixlen, int ifindex, u32 lseq)
|
||||||
{
|
{
|
||||||
struct ifaddrlblmsg *ifal = nlmsg_data(nlh);
|
struct ifaddrlblmsg *ifal = nlmsg_data(nlh);
|
||||||
ifal->ifal_family = AF_INET6;
|
ifal->ifal_family = AF_INET6;
|
||||||
|
|
|
@ -113,7 +113,7 @@ static inline struct scatterlist *ah_req_sg(struct crypto_ahash *ahash,
|
||||||
__alignof__(struct scatterlist));
|
__alignof__(struct scatterlist));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int zero_out_mutable_opts(struct ipv6_opt_hdr *opthdr)
|
static bool zero_out_mutable_opts(struct ipv6_opt_hdr *opthdr)
|
||||||
{
|
{
|
||||||
u8 *opt = (u8 *)opthdr;
|
u8 *opt = (u8 *)opthdr;
|
||||||
int len = ipv6_optlen(opthdr);
|
int len = ipv6_optlen(opthdr);
|
||||||
|
@ -145,10 +145,10 @@ static int zero_out_mutable_opts(struct ipv6_opt_hdr *opthdr)
|
||||||
len -= optlen;
|
len -= optlen;
|
||||||
}
|
}
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
return 1;
|
return true;
|
||||||
|
|
||||||
bad:
|
bad:
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)
|
#if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)
|
||||||
|
|
|
@ -342,7 +342,7 @@ static int ipv6_dev_ac_dec(struct net_device *dev, const struct in6_addr *addr)
|
||||||
* check if the interface has this anycast address
|
* check if the interface has this anycast address
|
||||||
* called with rcu_read_lock()
|
* called with rcu_read_lock()
|
||||||
*/
|
*/
|
||||||
static int ipv6_chk_acast_dev(struct net_device *dev, const struct in6_addr *addr)
|
static bool ipv6_chk_acast_dev(struct net_device *dev, const struct in6_addr *addr)
|
||||||
{
|
{
|
||||||
struct inet6_dev *idev;
|
struct inet6_dev *idev;
|
||||||
struct ifacaddr6 *aca;
|
struct ifacaddr6 *aca;
|
||||||
|
@ -356,16 +356,16 @@ static int ipv6_chk_acast_dev(struct net_device *dev, const struct in6_addr *add
|
||||||
read_unlock_bh(&idev->lock);
|
read_unlock_bh(&idev->lock);
|
||||||
return aca != NULL;
|
return aca != NULL;
|
||||||
}
|
}
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* check if given interface (or any, if dev==0) has this anycast address
|
* check if given interface (or any, if dev==0) has this anycast address
|
||||||
*/
|
*/
|
||||||
int ipv6_chk_acast_addr(struct net *net, struct net_device *dev,
|
bool ipv6_chk_acast_addr(struct net *net, struct net_device *dev,
|
||||||
const struct in6_addr *addr)
|
const struct in6_addr *addr)
|
||||||
{
|
{
|
||||||
int found = 0;
|
bool found = false;
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
if (dev)
|
if (dev)
|
||||||
|
@ -373,7 +373,7 @@ int ipv6_chk_acast_addr(struct net *net, struct net_device *dev,
|
||||||
else
|
else
|
||||||
for_each_netdev_rcu(net, dev)
|
for_each_netdev_rcu(net, dev)
|
||||||
if (ipv6_chk_acast_dev(dev, addr)) {
|
if (ipv6_chk_acast_dev(dev, addr)) {
|
||||||
found = 1;
|
found = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
|
|
@ -34,9 +34,9 @@
|
||||||
#include <linux/errqueue.h>
|
#include <linux/errqueue.h>
|
||||||
#include <asm/uaccess.h>
|
#include <asm/uaccess.h>
|
||||||
|
|
||||||
static inline int ipv6_mapped_addr_any(const struct in6_addr *a)
|
static bool ipv6_mapped_addr_any(const struct in6_addr *a)
|
||||||
{
|
{
|
||||||
return (ipv6_addr_v4mapped(a) && (a->s6_addr32[3] == 0));
|
return ipv6_addr_v4mapped(a) && (a->s6_addr32[3] == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
int ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
int ip6_datagram_connect(struct sock *sk, struct sockaddr *uaddr, int addr_len)
|
||||||
|
|
|
@ -96,14 +96,14 @@ EXPORT_SYMBOL_GPL(ipv6_find_tlv);
|
||||||
/*
|
/*
|
||||||
* Parsing tlv encoded headers.
|
* Parsing tlv encoded headers.
|
||||||
*
|
*
|
||||||
* Parsing function "func" returns 1, if parsing succeed
|
* Parsing function "func" returns true, if parsing succeed
|
||||||
* and 0, if it failed.
|
* and false, if it failed.
|
||||||
* It MUST NOT touch skb->h.
|
* It MUST NOT touch skb->h.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
struct tlvtype_proc {
|
struct tlvtype_proc {
|
||||||
int type;
|
int type;
|
||||||
int (*func)(struct sk_buff *skb, int offset);
|
bool (*func)(struct sk_buff *skb, int offset);
|
||||||
};
|
};
|
||||||
|
|
||||||
/*********************
|
/*********************
|
||||||
|
@ -112,11 +112,11 @@ struct tlvtype_proc {
|
||||||
|
|
||||||
/* An unknown option is detected, decide what to do */
|
/* An unknown option is detected, decide what to do */
|
||||||
|
|
||||||
static int ip6_tlvopt_unknown(struct sk_buff *skb, int optoff)
|
static bool ip6_tlvopt_unknown(struct sk_buff *skb, int optoff)
|
||||||
{
|
{
|
||||||
switch ((skb_network_header(skb)[optoff] & 0xC0) >> 6) {
|
switch ((skb_network_header(skb)[optoff] & 0xC0) >> 6) {
|
||||||
case 0: /* ignore */
|
case 0: /* ignore */
|
||||||
return 1;
|
return true;
|
||||||
|
|
||||||
case 1: /* drop packet */
|
case 1: /* drop packet */
|
||||||
break;
|
break;
|
||||||
|
@ -129,18 +129,18 @@ static int ip6_tlvopt_unknown(struct sk_buff *skb, int optoff)
|
||||||
break;
|
break;
|
||||||
case 2: /* send ICMP PARM PROB regardless and drop packet */
|
case 2: /* send ICMP PARM PROB regardless and drop packet */
|
||||||
icmpv6_param_prob(skb, ICMPV6_UNK_OPTION, optoff);
|
icmpv6_param_prob(skb, ICMPV6_UNK_OPTION, optoff);
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Parse tlv encoded option header (hop-by-hop or destination) */
|
/* Parse tlv encoded option header (hop-by-hop or destination) */
|
||||||
|
|
||||||
static int ip6_parse_tlv(struct tlvtype_proc *procs, struct sk_buff *skb)
|
static bool ip6_parse_tlv(const struct tlvtype_proc *procs, struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
struct tlvtype_proc *curr;
|
const struct tlvtype_proc *curr;
|
||||||
const unsigned char *nh = skb_network_header(skb);
|
const unsigned char *nh = skb_network_header(skb);
|
||||||
int off = skb_network_header_len(skb);
|
int off = skb_network_header_len(skb);
|
||||||
int len = (skb_transport_header(skb)[1] + 1) << 3;
|
int len = (skb_transport_header(skb)[1] + 1) << 3;
|
||||||
|
@ -186,14 +186,14 @@ static int ip6_parse_tlv(struct tlvtype_proc *procs, struct sk_buff *skb)
|
||||||
/* type specific length/alignment
|
/* type specific length/alignment
|
||||||
checks will be performed in the
|
checks will be performed in the
|
||||||
func(). */
|
func(). */
|
||||||
if (curr->func(skb, off) == 0)
|
if (curr->func(skb, off) == false)
|
||||||
return 0;
|
return false;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (curr->type < 0) {
|
if (curr->type < 0) {
|
||||||
if (ip6_tlvopt_unknown(skb, off) == 0)
|
if (ip6_tlvopt_unknown(skb, off) == 0)
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -201,10 +201,10 @@ static int ip6_parse_tlv(struct tlvtype_proc *procs, struct sk_buff *skb)
|
||||||
len -= optlen;
|
len -= optlen;
|
||||||
}
|
}
|
||||||
if (len == 0)
|
if (len == 0)
|
||||||
return 1;
|
return true;
|
||||||
bad:
|
bad:
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*****************************
|
/*****************************
|
||||||
|
@ -212,7 +212,7 @@ bad:
|
||||||
*****************************/
|
*****************************/
|
||||||
|
|
||||||
#if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)
|
#if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)
|
||||||
static int ipv6_dest_hao(struct sk_buff *skb, int optoff)
|
static bool ipv6_dest_hao(struct sk_buff *skb, int optoff)
|
||||||
{
|
{
|
||||||
struct ipv6_destopt_hao *hao;
|
struct ipv6_destopt_hao *hao;
|
||||||
struct inet6_skb_parm *opt = IP6CB(skb);
|
struct inet6_skb_parm *opt = IP6CB(skb);
|
||||||
|
@ -266,15 +266,15 @@ static int ipv6_dest_hao(struct sk_buff *skb, int optoff)
|
||||||
if (skb->tstamp.tv64 == 0)
|
if (skb->tstamp.tv64 == 0)
|
||||||
__net_timestamp(skb);
|
__net_timestamp(skb);
|
||||||
|
|
||||||
return 1;
|
return true;
|
||||||
|
|
||||||
discard:
|
discard:
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
static struct tlvtype_proc tlvprocdestopt_lst[] = {
|
static const struct tlvtype_proc tlvprocdestopt_lst[] = {
|
||||||
#if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)
|
#if defined(CONFIG_IPV6_MIP6) || defined(CONFIG_IPV6_MIP6_MODULE)
|
||||||
{
|
{
|
||||||
.type = IPV6_TLV_HAO,
|
.type = IPV6_TLV_HAO,
|
||||||
|
@ -579,23 +579,23 @@ static inline struct net *ipv6_skb_net(struct sk_buff *skb)
|
||||||
|
|
||||||
/* Router Alert as of RFC 2711 */
|
/* Router Alert as of RFC 2711 */
|
||||||
|
|
||||||
static int ipv6_hop_ra(struct sk_buff *skb, int optoff)
|
static bool ipv6_hop_ra(struct sk_buff *skb, int optoff)
|
||||||
{
|
{
|
||||||
const unsigned char *nh = skb_network_header(skb);
|
const unsigned char *nh = skb_network_header(skb);
|
||||||
|
|
||||||
if (nh[optoff + 1] == 2) {
|
if (nh[optoff + 1] == 2) {
|
||||||
IP6CB(skb)->ra = optoff;
|
IP6CB(skb)->ra = optoff;
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
LIMIT_NETDEBUG(KERN_DEBUG "ipv6_hop_ra: wrong RA length %d\n",
|
LIMIT_NETDEBUG(KERN_DEBUG "ipv6_hop_ra: wrong RA length %d\n",
|
||||||
nh[optoff + 1]);
|
nh[optoff + 1]);
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Jumbo payload */
|
/* Jumbo payload */
|
||||||
|
|
||||||
static int ipv6_hop_jumbo(struct sk_buff *skb, int optoff)
|
static bool ipv6_hop_jumbo(struct sk_buff *skb, int optoff)
|
||||||
{
|
{
|
||||||
const unsigned char *nh = skb_network_header(skb);
|
const unsigned char *nh = skb_network_header(skb);
|
||||||
struct net *net = ipv6_skb_net(skb);
|
struct net *net = ipv6_skb_net(skb);
|
||||||
|
@ -614,13 +614,13 @@ static int ipv6_hop_jumbo(struct sk_buff *skb, int optoff)
|
||||||
IP6_INC_STATS_BH(net, ipv6_skb_idev(skb),
|
IP6_INC_STATS_BH(net, ipv6_skb_idev(skb),
|
||||||
IPSTATS_MIB_INHDRERRORS);
|
IPSTATS_MIB_INHDRERRORS);
|
||||||
icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, optoff+2);
|
icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, optoff+2);
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
if (ipv6_hdr(skb)->payload_len) {
|
if (ipv6_hdr(skb)->payload_len) {
|
||||||
IP6_INC_STATS_BH(net, ipv6_skb_idev(skb),
|
IP6_INC_STATS_BH(net, ipv6_skb_idev(skb),
|
||||||
IPSTATS_MIB_INHDRERRORS);
|
IPSTATS_MIB_INHDRERRORS);
|
||||||
icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, optoff);
|
icmpv6_param_prob(skb, ICMPV6_HDR_FIELD, optoff);
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (pkt_len > skb->len - sizeof(struct ipv6hdr)) {
|
if (pkt_len > skb->len - sizeof(struct ipv6hdr)) {
|
||||||
|
@ -632,14 +632,14 @@ static int ipv6_hop_jumbo(struct sk_buff *skb, int optoff)
|
||||||
if (pskb_trim_rcsum(skb, pkt_len + sizeof(struct ipv6hdr)))
|
if (pskb_trim_rcsum(skb, pkt_len + sizeof(struct ipv6hdr)))
|
||||||
goto drop;
|
goto drop;
|
||||||
|
|
||||||
return 1;
|
return true;
|
||||||
|
|
||||||
drop:
|
drop:
|
||||||
kfree_skb(skb);
|
kfree_skb(skb);
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct tlvtype_proc tlvprochopopt_lst[] = {
|
static const struct tlvtype_proc tlvprochopopt_lst[] = {
|
||||||
{
|
{
|
||||||
.type = IPV6_TLV_ROUTERALERT,
|
.type = IPV6_TLV_ROUTERALERT,
|
||||||
.func = ipv6_hop_ra,
|
.func = ipv6_hop_ra,
|
||||||
|
|
|
@ -9,7 +9,7 @@
|
||||||
* find out if nexthdr is a well-known extension header or a protocol
|
* find out if nexthdr is a well-known extension header or a protocol
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int ipv6_ext_hdr(u8 nexthdr)
|
bool ipv6_ext_hdr(u8 nexthdr)
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* find out if nexthdr is an extension header or a protocol
|
* find out if nexthdr is an extension header or a protocol
|
||||||
|
|
|
@ -131,7 +131,7 @@ void icmpv6_param_prob(struct sk_buff *skb, u8 code, int pos)
|
||||||
* --ANK (980726)
|
* --ANK (980726)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static int is_ineligible(struct sk_buff *skb)
|
static bool is_ineligible(const struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
int ptr = (u8 *)(ipv6_hdr(skb) + 1) - skb->data;
|
int ptr = (u8 *)(ipv6_hdr(skb) + 1) - skb->data;
|
||||||
int len = skb->len - ptr;
|
int len = skb->len - ptr;
|
||||||
|
@ -139,11 +139,11 @@ static int is_ineligible(struct sk_buff *skb)
|
||||||
__be16 frag_off;
|
__be16 frag_off;
|
||||||
|
|
||||||
if (len < 0)
|
if (len < 0)
|
||||||
return 1;
|
return true;
|
||||||
|
|
||||||
ptr = ipv6_skip_exthdr(skb, ptr, &nexthdr, &frag_off);
|
ptr = ipv6_skip_exthdr(skb, ptr, &nexthdr, &frag_off);
|
||||||
if (ptr < 0)
|
if (ptr < 0)
|
||||||
return 0;
|
return false;
|
||||||
if (nexthdr == IPPROTO_ICMPV6) {
|
if (nexthdr == IPPROTO_ICMPV6) {
|
||||||
u8 _type, *tp;
|
u8 _type, *tp;
|
||||||
tp = skb_header_pointer(skb,
|
tp = skb_header_pointer(skb,
|
||||||
|
@ -151,9 +151,9 @@ static int is_ineligible(struct sk_buff *skb)
|
||||||
sizeof(_type), &_type);
|
sizeof(_type), &_type);
|
||||||
if (tp == NULL ||
|
if (tp == NULL ||
|
||||||
!(*tp & ICMPV6_INFOMSG_MASK))
|
!(*tp & ICMPV6_INFOMSG_MASK))
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -208,14 +208,14 @@ static inline bool icmpv6_xrlim_allow(struct sock *sk, u8 type,
|
||||||
* highest-order two bits set to 10
|
* highest-order two bits set to 10
|
||||||
*/
|
*/
|
||||||
|
|
||||||
static __inline__ int opt_unrec(struct sk_buff *skb, __u32 offset)
|
static bool opt_unrec(struct sk_buff *skb, __u32 offset)
|
||||||
{
|
{
|
||||||
u8 _optval, *op;
|
u8 _optval, *op;
|
||||||
|
|
||||||
offset += skb_network_offset(skb);
|
offset += skb_network_offset(skb);
|
||||||
op = skb_header_pointer(skb, offset, sizeof(_optval), &_optval);
|
op = skb_header_pointer(skb, offset, sizeof(_optval), &_optval);
|
||||||
if (op == NULL)
|
if (op == NULL)
|
||||||
return 1;
|
return true;
|
||||||
return (*op & 0xC0) == 0x80;
|
return (*op & 0xC0) == 0x80;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -433,32 +433,32 @@ static int mem_check(struct sock *sk)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ipv6_hdr_cmp(struct ipv6_opt_hdr *h1, struct ipv6_opt_hdr *h2)
|
static bool ipv6_hdr_cmp(struct ipv6_opt_hdr *h1, struct ipv6_opt_hdr *h2)
|
||||||
{
|
{
|
||||||
if (h1 == h2)
|
if (h1 == h2)
|
||||||
return 0;
|
return false;
|
||||||
if (h1 == NULL || h2 == NULL)
|
if (h1 == NULL || h2 == NULL)
|
||||||
return 1;
|
return true;
|
||||||
if (h1->hdrlen != h2->hdrlen)
|
if (h1->hdrlen != h2->hdrlen)
|
||||||
return 1;
|
return true;
|
||||||
return memcmp(h1+1, h2+1, ((h1->hdrlen+1)<<3) - sizeof(*h1));
|
return memcmp(h1+1, h2+1, ((h1->hdrlen+1)<<3) - sizeof(*h1));
|
||||||
}
|
}
|
||||||
|
|
||||||
static int ipv6_opt_cmp(struct ipv6_txoptions *o1, struct ipv6_txoptions *o2)
|
static bool ipv6_opt_cmp(struct ipv6_txoptions *o1, struct ipv6_txoptions *o2)
|
||||||
{
|
{
|
||||||
if (o1 == o2)
|
if (o1 == o2)
|
||||||
return 0;
|
return false;
|
||||||
if (o1 == NULL || o2 == NULL)
|
if (o1 == NULL || o2 == NULL)
|
||||||
return 1;
|
return true;
|
||||||
if (o1->opt_nflen != o2->opt_nflen)
|
if (o1->opt_nflen != o2->opt_nflen)
|
||||||
return 1;
|
return true;
|
||||||
if (ipv6_hdr_cmp(o1->hopopt, o2->hopopt))
|
if (ipv6_hdr_cmp(o1->hopopt, o2->hopopt))
|
||||||
return 1;
|
return true;
|
||||||
if (ipv6_hdr_cmp(o1->dst0opt, o2->dst0opt))
|
if (ipv6_hdr_cmp(o1->dst0opt, o2->dst0opt))
|
||||||
return 1;
|
return true;
|
||||||
if (ipv6_hdr_cmp((struct ipv6_opt_hdr *)o1->srcrt, (struct ipv6_opt_hdr *)o2->srcrt))
|
if (ipv6_hdr_cmp((struct ipv6_opt_hdr *)o1->srcrt, (struct ipv6_opt_hdr *)o2->srcrt))
|
||||||
return 1;
|
return true;
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline void fl_link(struct ipv6_pinfo *np, struct ipv6_fl_socklist *sfl,
|
static inline void fl_link(struct ipv6_pinfo *np, struct ipv6_fl_socklist *sfl,
|
||||||
|
|
|
@ -170,7 +170,8 @@ static int ip6_input_finish(struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
const struct inet6_protocol *ipprot;
|
const struct inet6_protocol *ipprot;
|
||||||
unsigned int nhoff;
|
unsigned int nhoff;
|
||||||
int nexthdr, raw;
|
int nexthdr;
|
||||||
|
bool raw;
|
||||||
u8 hash;
|
u8 hash;
|
||||||
struct inet6_dev *idev;
|
struct inet6_dev *idev;
|
||||||
struct net *net = dev_net(skb_dst(skb)->dev);
|
struct net *net = dev_net(skb_dst(skb)->dev);
|
||||||
|
@ -251,7 +252,7 @@ int ip6_input(struct sk_buff *skb)
|
||||||
int ip6_mc_input(struct sk_buff *skb)
|
int ip6_mc_input(struct sk_buff *skb)
|
||||||
{
|
{
|
||||||
const struct ipv6hdr *hdr;
|
const struct ipv6hdr *hdr;
|
||||||
int deliver;
|
bool deliver;
|
||||||
|
|
||||||
IP6_UPD_PO_STATS_BH(dev_net(skb_dst(skb)->dev),
|
IP6_UPD_PO_STATS_BH(dev_net(skb_dst(skb)->dev),
|
||||||
ip6_dst_idev(skb_dst(skb)), IPSTATS_MIB_INMCAST,
|
ip6_dst_idev(skb_dst(skb)), IPSTATS_MIB_INMCAST,
|
||||||
|
@ -287,7 +288,7 @@ int ip6_mc_input(struct sk_buff *skb)
|
||||||
* is for MLD (0x0000).
|
* is for MLD (0x0000).
|
||||||
*/
|
*/
|
||||||
if ((ptr[2] | ptr[3]) == 0) {
|
if ((ptr[2] | ptr[3]) == 0) {
|
||||||
deliver = 0;
|
deliver = false;
|
||||||
|
|
||||||
if (!ipv6_ext_hdr(nexthdr)) {
|
if (!ipv6_ext_hdr(nexthdr)) {
|
||||||
/* BUG */
|
/* BUG */
|
||||||
|
@ -312,7 +313,7 @@ int ip6_mc_input(struct sk_buff *skb)
|
||||||
case ICMPV6_MGM_REPORT:
|
case ICMPV6_MGM_REPORT:
|
||||||
case ICMPV6_MGM_REDUCTION:
|
case ICMPV6_MGM_REDUCTION:
|
||||||
case ICMPV6_MLD2_REPORT:
|
case ICMPV6_MLD2_REPORT:
|
||||||
deliver = 1;
|
deliver = true;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
goto out;
|
goto out;
|
||||||
|
|
|
@ -606,13 +606,13 @@ done:
|
||||||
return err;
|
return err;
|
||||||
}
|
}
|
||||||
|
|
||||||
int inet6_mc_check(struct sock *sk, const struct in6_addr *mc_addr,
|
bool inet6_mc_check(struct sock *sk, const struct in6_addr *mc_addr,
|
||||||
const struct in6_addr *src_addr)
|
const struct in6_addr *src_addr)
|
||||||
{
|
{
|
||||||
struct ipv6_pinfo *np = inet6_sk(sk);
|
struct ipv6_pinfo *np = inet6_sk(sk);
|
||||||
struct ipv6_mc_socklist *mc;
|
struct ipv6_mc_socklist *mc;
|
||||||
struct ip6_sf_socklist *psl;
|
struct ip6_sf_socklist *psl;
|
||||||
int rv = 1;
|
bool rv = true;
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
for_each_pmc_rcu(np, mc) {
|
for_each_pmc_rcu(np, mc) {
|
||||||
|
@ -621,7 +621,7 @@ int inet6_mc_check(struct sock *sk, const struct in6_addr *mc_addr,
|
||||||
}
|
}
|
||||||
if (!mc) {
|
if (!mc) {
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
read_lock(&mc->sflock);
|
read_lock(&mc->sflock);
|
||||||
psl = mc->sflist;
|
psl = mc->sflist;
|
||||||
|
@ -635,9 +635,9 @@ int inet6_mc_check(struct sock *sk, const struct in6_addr *mc_addr,
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
if (mc->sfmode == MCAST_INCLUDE && i >= psl->sl_count)
|
if (mc->sfmode == MCAST_INCLUDE && i >= psl->sl_count)
|
||||||
rv = 0;
|
rv = false;
|
||||||
if (mc->sfmode == MCAST_EXCLUDE && i < psl->sl_count)
|
if (mc->sfmode == MCAST_EXCLUDE && i < psl->sl_count)
|
||||||
rv = 0;
|
rv = false;
|
||||||
}
|
}
|
||||||
read_unlock(&mc->sflock);
|
read_unlock(&mc->sflock);
|
||||||
rcu_read_unlock();
|
rcu_read_unlock();
|
||||||
|
@ -931,15 +931,15 @@ int ipv6_dev_mc_dec(struct net_device *dev, const struct in6_addr *addr)
|
||||||
/*
|
/*
|
||||||
* identify MLD packets for MLD filter exceptions
|
* identify MLD packets for MLD filter exceptions
|
||||||
*/
|
*/
|
||||||
int ipv6_is_mld(struct sk_buff *skb, int nexthdr)
|
bool ipv6_is_mld(struct sk_buff *skb, int nexthdr)
|
||||||
{
|
{
|
||||||
struct icmp6hdr *pic;
|
struct icmp6hdr *pic;
|
||||||
|
|
||||||
if (nexthdr != IPPROTO_ICMPV6)
|
if (nexthdr != IPPROTO_ICMPV6)
|
||||||
return 0;
|
return false;
|
||||||
|
|
||||||
if (!pskb_may_pull(skb, sizeof(struct icmp6hdr)))
|
if (!pskb_may_pull(skb, sizeof(struct icmp6hdr)))
|
||||||
return 0;
|
return false;
|
||||||
|
|
||||||
pic = icmp6_hdr(skb);
|
pic = icmp6_hdr(skb);
|
||||||
|
|
||||||
|
@ -948,22 +948,22 @@ int ipv6_is_mld(struct sk_buff *skb, int nexthdr)
|
||||||
case ICMPV6_MGM_REPORT:
|
case ICMPV6_MGM_REPORT:
|
||||||
case ICMPV6_MGM_REDUCTION:
|
case ICMPV6_MGM_REDUCTION:
|
||||||
case ICMPV6_MLD2_REPORT:
|
case ICMPV6_MLD2_REPORT:
|
||||||
return 1;
|
return true;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* check if the interface/address pair is valid
|
* check if the interface/address pair is valid
|
||||||
*/
|
*/
|
||||||
int ipv6_chk_mcast_addr(struct net_device *dev, const struct in6_addr *group,
|
bool ipv6_chk_mcast_addr(struct net_device *dev, const struct in6_addr *group,
|
||||||
const struct in6_addr *src_addr)
|
const struct in6_addr *src_addr)
|
||||||
{
|
{
|
||||||
struct inet6_dev *idev;
|
struct inet6_dev *idev;
|
||||||
struct ifmcaddr6 *mc;
|
struct ifmcaddr6 *mc;
|
||||||
int rv = 0;
|
bool rv = false;
|
||||||
|
|
||||||
rcu_read_lock();
|
rcu_read_lock();
|
||||||
idev = __in6_dev_get(dev);
|
idev = __in6_dev_get(dev);
|
||||||
|
@ -990,7 +990,7 @@ int ipv6_chk_mcast_addr(struct net_device *dev, const struct in6_addr *group,
|
||||||
rv = mc->mca_sfcount[MCAST_EXCLUDE] !=0;
|
rv = mc->mca_sfcount[MCAST_EXCLUDE] !=0;
|
||||||
spin_unlock_bh(&mc->mca_lock);
|
spin_unlock_bh(&mc->mca_lock);
|
||||||
} else
|
} else
|
||||||
rv = 1; /* don't filter unspecified source */
|
rv = true; /* don't filter unspecified source */
|
||||||
}
|
}
|
||||||
read_unlock_bh(&idev->lock);
|
read_unlock_bh(&idev->lock);
|
||||||
}
|
}
|
||||||
|
@ -1046,8 +1046,8 @@ static void igmp6_group_queried(struct ifmcaddr6 *ma, unsigned long resptime)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* mark EXCLUDE-mode sources */
|
/* mark EXCLUDE-mode sources */
|
||||||
static int mld_xmarksources(struct ifmcaddr6 *pmc, int nsrcs,
|
static bool mld_xmarksources(struct ifmcaddr6 *pmc, int nsrcs,
|
||||||
const struct in6_addr *srcs)
|
const struct in6_addr *srcs)
|
||||||
{
|
{
|
||||||
struct ip6_sf_list *psf;
|
struct ip6_sf_list *psf;
|
||||||
int i, scount;
|
int i, scount;
|
||||||
|
@ -1070,12 +1070,12 @@ static int mld_xmarksources(struct ifmcaddr6 *pmc, int nsrcs,
|
||||||
}
|
}
|
||||||
pmc->mca_flags &= ~MAF_GSQUERY;
|
pmc->mca_flags &= ~MAF_GSQUERY;
|
||||||
if (scount == nsrcs) /* all sources excluded */
|
if (scount == nsrcs) /* all sources excluded */
|
||||||
return 0;
|
return false;
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int mld_marksources(struct ifmcaddr6 *pmc, int nsrcs,
|
static bool mld_marksources(struct ifmcaddr6 *pmc, int nsrcs,
|
||||||
const struct in6_addr *srcs)
|
const struct in6_addr *srcs)
|
||||||
{
|
{
|
||||||
struct ip6_sf_list *psf;
|
struct ip6_sf_list *psf;
|
||||||
int i, scount;
|
int i, scount;
|
||||||
|
@ -1099,10 +1099,10 @@ static int mld_marksources(struct ifmcaddr6 *pmc, int nsrcs,
|
||||||
}
|
}
|
||||||
if (!scount) {
|
if (!scount) {
|
||||||
pmc->mca_flags &= ~MAF_GSQUERY;
|
pmc->mca_flags &= ~MAF_GSQUERY;
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
pmc->mca_flags |= MAF_GSQUERY;
|
pmc->mca_flags |= MAF_GSQUERY;
|
||||||
return 1;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* called with rcu_read_lock() */
|
/* called with rcu_read_lock() */
|
||||||
|
@ -1276,17 +1276,17 @@ int igmp6_event_report(struct sk_buff *skb)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int is_in(struct ifmcaddr6 *pmc, struct ip6_sf_list *psf, int type,
|
static bool is_in(struct ifmcaddr6 *pmc, struct ip6_sf_list *psf, int type,
|
||||||
int gdeleted, int sdeleted)
|
int gdeleted, int sdeleted)
|
||||||
{
|
{
|
||||||
switch (type) {
|
switch (type) {
|
||||||
case MLD2_MODE_IS_INCLUDE:
|
case MLD2_MODE_IS_INCLUDE:
|
||||||
case MLD2_MODE_IS_EXCLUDE:
|
case MLD2_MODE_IS_EXCLUDE:
|
||||||
if (gdeleted || sdeleted)
|
if (gdeleted || sdeleted)
|
||||||
return 0;
|
return false;
|
||||||
if (!((pmc->mca_flags & MAF_GSQUERY) && !psf->sf_gsresp)) {
|
if (!((pmc->mca_flags & MAF_GSQUERY) && !psf->sf_gsresp)) {
|
||||||
if (pmc->mca_sfmode == MCAST_INCLUDE)
|
if (pmc->mca_sfmode == MCAST_INCLUDE)
|
||||||
return 1;
|
return true;
|
||||||
/* don't include if this source is excluded
|
/* don't include if this source is excluded
|
||||||
* in all filters
|
* in all filters
|
||||||
*/
|
*/
|
||||||
|
@ -1295,29 +1295,29 @@ static int is_in(struct ifmcaddr6 *pmc, struct ip6_sf_list *psf, int type,
|
||||||
return pmc->mca_sfcount[MCAST_EXCLUDE] ==
|
return pmc->mca_sfcount[MCAST_EXCLUDE] ==
|
||||||
psf->sf_count[MCAST_EXCLUDE];
|
psf->sf_count[MCAST_EXCLUDE];
|
||||||
}
|
}
|
||||||
return 0;
|
return false;
|
||||||
case MLD2_CHANGE_TO_INCLUDE:
|
case MLD2_CHANGE_TO_INCLUDE:
|
||||||
if (gdeleted || sdeleted)
|
if (gdeleted || sdeleted)
|
||||||
return 0;
|
return false;
|
||||||
return psf->sf_count[MCAST_INCLUDE] != 0;
|
return psf->sf_count[MCAST_INCLUDE] != 0;
|
||||||
case MLD2_CHANGE_TO_EXCLUDE:
|
case MLD2_CHANGE_TO_EXCLUDE:
|
||||||
if (gdeleted || sdeleted)
|
if (gdeleted || sdeleted)
|
||||||
return 0;
|
return false;
|
||||||
if (pmc->mca_sfcount[MCAST_EXCLUDE] == 0 ||
|
if (pmc->mca_sfcount[MCAST_EXCLUDE] == 0 ||
|
||||||
psf->sf_count[MCAST_INCLUDE])
|
psf->sf_count[MCAST_INCLUDE])
|
||||||
return 0;
|
return false;
|
||||||
return pmc->mca_sfcount[MCAST_EXCLUDE] ==
|
return pmc->mca_sfcount[MCAST_EXCLUDE] ==
|
||||||
psf->sf_count[MCAST_EXCLUDE];
|
psf->sf_count[MCAST_EXCLUDE];
|
||||||
case MLD2_ALLOW_NEW_SOURCES:
|
case MLD2_ALLOW_NEW_SOURCES:
|
||||||
if (gdeleted || !psf->sf_crcount)
|
if (gdeleted || !psf->sf_crcount)
|
||||||
return 0;
|
return false;
|
||||||
return (pmc->mca_sfmode == MCAST_INCLUDE) ^ sdeleted;
|
return (pmc->mca_sfmode == MCAST_INCLUDE) ^ sdeleted;
|
||||||
case MLD2_BLOCK_OLD_SOURCES:
|
case MLD2_BLOCK_OLD_SOURCES:
|
||||||
if (pmc->mca_sfmode == MCAST_INCLUDE)
|
if (pmc->mca_sfmode == MCAST_INCLUDE)
|
||||||
return gdeleted || (psf->sf_crcount && sdeleted);
|
return gdeleted || (psf->sf_crcount && sdeleted);
|
||||||
return psf->sf_crcount && !gdeleted && !sdeleted;
|
return psf->sf_crcount && !gdeleted && !sdeleted;
|
||||||
}
|
}
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
|
|
@ -348,7 +348,7 @@ static int ndisc_constructor(struct neighbour *neigh)
|
||||||
struct net_device *dev = neigh->dev;
|
struct net_device *dev = neigh->dev;
|
||||||
struct inet6_dev *in6_dev;
|
struct inet6_dev *in6_dev;
|
||||||
struct neigh_parms *parms;
|
struct neigh_parms *parms;
|
||||||
int is_multicast = ipv6_addr_is_multicast(addr);
|
bool is_multicast = ipv6_addr_is_multicast(addr);
|
||||||
|
|
||||||
in6_dev = in6_dev_get(dev);
|
in6_dev = in6_dev_get(dev);
|
||||||
if (in6_dev == NULL) {
|
if (in6_dev == NULL) {
|
||||||
|
@ -725,7 +725,7 @@ static void ndisc_recv_ns(struct sk_buff *skb)
|
||||||
struct inet6_dev *idev = NULL;
|
struct inet6_dev *idev = NULL;
|
||||||
struct neighbour *neigh;
|
struct neighbour *neigh;
|
||||||
int dad = ipv6_addr_any(saddr);
|
int dad = ipv6_addr_any(saddr);
|
||||||
int inc;
|
bool inc;
|
||||||
int is_router = -1;
|
int is_router = -1;
|
||||||
|
|
||||||
if (ipv6_addr_is_multicast(&msg->target)) {
|
if (ipv6_addr_is_multicast(&msg->target)) {
|
||||||
|
|
|
@ -72,7 +72,7 @@ static struct sock *__raw_v6_lookup(struct net *net, struct sock *sk,
|
||||||
const struct in6_addr *rmt_addr, int dif)
|
const struct in6_addr *rmt_addr, int dif)
|
||||||
{
|
{
|
||||||
struct hlist_node *node;
|
struct hlist_node *node;
|
||||||
int is_multicast = ipv6_addr_is_multicast(loc_addr);
|
bool is_multicast = ipv6_addr_is_multicast(loc_addr);
|
||||||
|
|
||||||
sk_for_each_from(sk, node)
|
sk_for_each_from(sk, node)
|
||||||
if (inet_sk(sk)->inet_num == num) {
|
if (inet_sk(sk)->inet_num == num) {
|
||||||
|
@ -153,12 +153,12 @@ EXPORT_SYMBOL(rawv6_mh_filter_unregister);
|
||||||
*
|
*
|
||||||
* Caller owns SKB so we must make clones.
|
* Caller owns SKB so we must make clones.
|
||||||
*/
|
*/
|
||||||
static int ipv6_raw_deliver(struct sk_buff *skb, int nexthdr)
|
static bool ipv6_raw_deliver(struct sk_buff *skb, int nexthdr)
|
||||||
{
|
{
|
||||||
const struct in6_addr *saddr;
|
const struct in6_addr *saddr;
|
||||||
const struct in6_addr *daddr;
|
const struct in6_addr *daddr;
|
||||||
struct sock *sk;
|
struct sock *sk;
|
||||||
int delivered = 0;
|
bool delivered = false;
|
||||||
__u8 hash;
|
__u8 hash;
|
||||||
struct net *net;
|
struct net *net;
|
||||||
|
|
||||||
|
@ -179,7 +179,7 @@ static int ipv6_raw_deliver(struct sk_buff *skb, int nexthdr)
|
||||||
while (sk) {
|
while (sk) {
|
||||||
int filtered;
|
int filtered;
|
||||||
|
|
||||||
delivered = 1;
|
delivered = true;
|
||||||
switch (nexthdr) {
|
switch (nexthdr) {
|
||||||
case IPPROTO_ICMPV6:
|
case IPPROTO_ICMPV6:
|
||||||
filtered = icmpv6_filter(sk, skb);
|
filtered = icmpv6_filter(sk, skb);
|
||||||
|
@ -225,7 +225,7 @@ out:
|
||||||
return delivered;
|
return delivered;
|
||||||
}
|
}
|
||||||
|
|
||||||
int raw6_local_deliver(struct sk_buff *skb, int nexthdr)
|
bool raw6_local_deliver(struct sk_buff *skb, int nexthdr)
|
||||||
{
|
{
|
||||||
struct sock *raw_sk;
|
struct sock *raw_sk;
|
||||||
|
|
||||||
|
|
|
@ -333,22 +333,22 @@ static void ip6_dst_ifdown(struct dst_entry *dst, struct net_device *dev,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static __inline__ int rt6_check_expired(const struct rt6_info *rt)
|
static bool rt6_check_expired(const struct rt6_info *rt)
|
||||||
{
|
{
|
||||||
struct rt6_info *ort = NULL;
|
struct rt6_info *ort = NULL;
|
||||||
|
|
||||||
if (rt->rt6i_flags & RTF_EXPIRES) {
|
if (rt->rt6i_flags & RTF_EXPIRES) {
|
||||||
if (time_after(jiffies, rt->dst.expires))
|
if (time_after(jiffies, rt->dst.expires))
|
||||||
return 1;
|
return true;
|
||||||
} else if (rt->dst.from) {
|
} else if (rt->dst.from) {
|
||||||
ort = (struct rt6_info *) rt->dst.from;
|
ort = (struct rt6_info *) rt->dst.from;
|
||||||
return (ort->rt6i_flags & RTF_EXPIRES) &&
|
return (ort->rt6i_flags & RTF_EXPIRES) &&
|
||||||
time_after(jiffies, ort->dst.expires);
|
time_after(jiffies, ort->dst.expires);
|
||||||
}
|
}
|
||||||
return 0;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline int rt6_need_strict(const struct in6_addr *daddr)
|
static bool rt6_need_strict(const struct in6_addr *daddr)
|
||||||
{
|
{
|
||||||
return ipv6_addr_type(daddr) &
|
return ipv6_addr_type(daddr) &
|
||||||
(IPV6_ADDR_MULTICAST | IPV6_ADDR_LINKLOCAL | IPV6_ADDR_LOOPBACK);
|
(IPV6_ADDR_MULTICAST | IPV6_ADDR_LINKLOCAL | IPV6_ADDR_LOOPBACK);
|
||||||
|
|
Loading…
Add table
Reference in a new issue