Loading net/netfilter/xt_mac.c +10 −8 Original line number Diff line number Diff line Loading @@ -27,13 +27,15 @@ MODULE_ALIAS("ip6t_mac"); static bool mac_mt(const struct sk_buff *skb, const struct xt_match_param *par) { const struct xt_mac_info *info = par->matchinfo; /* Is mac pointer valid? */ return skb_mac_header(skb) >= skb->head && skb_mac_header(skb) + ETH_HLEN <= skb->data /* If so, compare... */ && ((!compare_ether_addr(eth_hdr(skb)->h_source, info->srcaddr)) ^ info->invert); bool ret; if (skb_mac_header(skb) < skb->head) return false; if (skb_mac_header(skb) + ETH_HLEN > skb->data) return false; ret = compare_ether_addr(eth_hdr(skb)->h_source, info->srcaddr) == 0; ret ^= info->invert; return ret; } static struct xt_match mac_mt_reg __read_mostly = { Loading Loading
net/netfilter/xt_mac.c +10 −8 Original line number Diff line number Diff line Loading @@ -27,13 +27,15 @@ MODULE_ALIAS("ip6t_mac"); static bool mac_mt(const struct sk_buff *skb, const struct xt_match_param *par) { const struct xt_mac_info *info = par->matchinfo; /* Is mac pointer valid? */ return skb_mac_header(skb) >= skb->head && skb_mac_header(skb) + ETH_HLEN <= skb->data /* If so, compare... */ && ((!compare_ether_addr(eth_hdr(skb)->h_source, info->srcaddr)) ^ info->invert); bool ret; if (skb_mac_header(skb) < skb->head) return false; if (skb_mac_header(skb) + ETH_HLEN > skb->data) return false; ret = compare_ether_addr(eth_hdr(skb)->h_source, info->srcaddr) == 0; ret ^= info->invert; return ret; } static struct xt_match mac_mt_reg __read_mostly = { Loading