提交 a50feda5 编写于 作者: E Eric Dumazet 提交者: David S. Miller

ipv6: bool/const conversions phase2

Mostly bool conversions, some inline removals and const additions.
Signed-off-by: NEric Dumazet <edumazet@google.com>
Signed-off-by: NDavid S. Miller <davem@davemloft.net>
上级 32e9072b
...@@ -131,9 +131,9 @@ extern int ipv6_sock_mc_join(struct sock *sk, int ifindex, ...@@ -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); ...@@ -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); ...@@ -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, ...@@ -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, ...@@ -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 @@ ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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 ...@@ -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, ...@@ -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 @@ ...@@ -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); ...@@ -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 { ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 @@ static int ip6_parse_tlv(struct tlvtype_proc *procs, struct sk_buff *skb) ...@@ -212,7 +212,7 @@ static int ip6_parse_tlv(struct tlvtype_proc *procs, struct sk_buff *skb)
*****************************/ *****************************/
#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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 @@ ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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 @@ int ip6_mc_msfget(struct sock *sk, struct group_filter *gsf, ...@@ -606,13 +606,13 @@ int ip6_mc_msfget(struct sock *sk, struct group_filter *gsf,
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, ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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) ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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, ...@@ -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) ...@@ -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) ...@@ -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, ...@@ -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); ...@@ -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) ...@@ -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 @@ static int ipv6_raw_deliver(struct sk_buff *skb, int nexthdr) ...@@ -225,7 +225,7 @@ static int ipv6_raw_deliver(struct sk_buff *skb, int nexthdr)
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, ...@@ -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);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册