Changeset 32659


Ignore:
Timestamp:
Jul 10, 2017, 4:19:56 PM (2 weeks ago)
Author:
brainslayer
Message:

optional compile without ipv6

Location:
src/linux/universal
Files:
16 edited

Legend:

Unmodified
Added
Removed
  • src/linux/universal/linux-3.10/include/net/addrconf.h

    r28983 r32659  
    205205
    206206/* Device notifier */
    207 extern int register_inet6addr_notifier(struct notifier_block *nb);
    208 extern int unregister_inet6addr_notifier(struct notifier_block *nb);
     207extern int __weak register_inet6addr_notifier(struct notifier_block *nb);
     208extern int __weak unregister_inet6addr_notifier(struct notifier_block *nb);
    209209extern int inet6addr_notifier_call_chain(unsigned long val, void *v);
    210210
  • src/linux/universal/linux-3.10/net/shortcut-fe/fast-classifier.c

    r32641 r32659  
    106106        struct notifier_block dev_notifier;     /* Device notifier */
    107107        struct notifier_block inet_notifier;    /* IPv4 notifier */
     108#ifdef SFE_SUPPORT_IPV6
    108109        struct notifier_block inet6_notifier;   /* IPv6 notifier */
     110#endif
    109111        u32 exceptions[FAST_CL_EXCEPTION_MAX];
    110112};
     
    255257                ret = sfe_ipv4_recv(dev, skb);
    256258
    257         } else if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
     259        }
     260#ifdef SFE_SUPPORT_IPV6
     261
     262        else if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
    258263                struct inet6_dev *in_dev;
    259264
     
    278283                ret = sfe_ipv6_recv(dev, skb);
    279284
    280         } else {
     285        }
     286#endif
     287        else {
    281288                DEBUG_TRACE("not IP packet\n");
    282289        }
     
    786793                        sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP;
    787794                }
    788         } else {
     795        }
     796#ifdef SFE_SUPPORT_IPV6
     797        else {
    789798                u32 dscp;
    790799
     
    813822                }
    814823        }
    815 
     824#endif
    816825        switch (sic.protocol) {
    817826        case IPPROTO_TCP:
     
    10481057}
    10491058
     1059#ifdef SFE_SUPPORT_IPV6
    10501060/*
    10511061 * fast_classifier_ipv6_post_routing_hook()
     
    10561066        return fast_classifier_post_routing(skb, false);
    10571067}
    1058 
     1068#endif
    10591069/*
    10601070 * fast_classifier_update_mark()
     
    11211131                sid.dest_ip.ip = (__be32)orig_tuple.dst.u3.ip;
    11221132                is_v4 = true;
    1123         } else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
     1133        }
     1134#ifdef SFE_SUPPORT_IPV6
     1135        else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
    11241136                sid.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6);
    11251137                sid.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6);
    11261138                is_v4 = false;
    1127         } else {
     1139        }
     1140#endif
     1141        else {
    11281142                DEBUG_TRACE("ignoring non-IPv4 and non-IPv6 connection\n");
    11291143                return NOTIFY_DONE;
     
    12351249static struct nf_hook_ops fast_classifier_ops_post_routing[] __read_mostly = {
    12361250        SFE_IPV4_NF_POST_ROUTING_HOOK(__fast_classifier_ipv4_post_routing_hook),
     1251#ifdef SFE_SUPPORT_IPV6
    12371252        SFE_IPV6_NF_POST_ROUTING_HOOK(__fast_classifier_ipv6_post_routing_hook),
     1253#endif
    12381254};
    12391255
     
    13771393                if (dev) {
    13781394                        sfe_ipv4_destroy_all_rules_for_dev(dev);
     1395#ifdef SFE_SUPPORT_IPV6
    13791396                        sfe_ipv6_destroy_all_rules_for_dev(dev);
     1397#endif
    13801398                }
    13811399                break;
     
    15731591        register_inetaddr_notifier(&sc->inet_notifier);
    15741592
     1593#ifdef SFE_SUPPORT_IPV6
    15751594        sc->inet6_notifier.notifier_call = fast_classifier_inet6_event;
    15761595        sc->inet6_notifier.priority = 1;
    1577         register_inet6addr_notifier(&sc->inet6_notifier);
    1578 
     1596        if (register_inet6addr_notifier)
     1597                register_inet6addr_notifier(&sc->inet6_notifier);
     1598#endif
    15791599        /*
    15801600         * Register our netfilter hooks.
     
    16401660         */
    16411661        sfe_ipv4_register_sync_rule_callback(fast_classifier_sync_rule);
     1662#ifdef SFE_SUPPORT_IPV6
    16421663        sfe_ipv6_register_sync_rule_callback(fast_classifier_sync_rule);
     1664#endif
    16431665        return 0;
    16441666
     
    16581680exit3:
    16591681        unregister_inetaddr_notifier(&sc->inet_notifier);
    1660         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1682#ifdef SFE_SUPPORT_IPV6
     1683        if (unregister_inet6addr_notifier)
     1684                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1685#endif
    16611686        unregister_netdevice_notifier(&sc->dev_notifier);
    16621687
     
    16861711         */
    16871712        sfe_ipv4_register_sync_rule_callback(NULL);
     1713#ifdef SFE_SUPPORT_IPV6
    16881714        sfe_ipv6_register_sync_rule_callback(NULL);
     1715#endif
    16891716
    16901717        /*
     
    17021729         */
    17031730        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1731#ifdef SFE_SUPPORT_IPV6
    17041732        sfe_ipv6_destroy_all_rules_for_dev(NULL);
     1733#endif
     1734
    17051735
    17061736#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0))
     
    17221752        nf_unregister_hooks(fast_classifier_ops_post_routing, ARRAY_SIZE(fast_classifier_ops_post_routing));
    17231753
    1724         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1754#ifdef SFE_SUPPORT_IPV6
     1755        if (unregister_inet6addr_notifier)
     1756                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1757#endif
    17251758        unregister_inetaddr_notifier(&sc->inet_notifier);
    17261759        unregister_netdevice_notifier(&sc->dev_notifier);
  • src/linux/universal/linux-3.10/net/shortcut-fe/sfe_cm.c

    r32631 r32659  
    102102        struct notifier_block dev_notifier;     /* Device notifier */
    103103        struct notifier_block inet_notifier;    /* IPv4 notifier */
     104#ifdef SFE_SUPPORT_IPV6
    104105        struct notifier_block inet6_notifier;   /* IPv6 notifier */
     106#endif
    105107        u32 exceptions[SFE_CM_EXCEPTION_MAX];
    106108};
     
    168170        }
    169171
     172#ifdef SFE_SUPPORT_IPV6
    170173        if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
    171174                struct inet6_dev *in_dev;
     
    191194                return sfe_ipv6_recv(dev, skb);
    192195        }
    193 
     196#endif
    194197        DEBUG_TRACE("not IP packet\n");
    195198        return 0;
     
    438441                        sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP;
    439442                }
    440         } else {
     443        }
     444#ifdef SFE_SUPPORT_IPV6
     445        else {
    441446                u32 dscp;
    442447
     
    465470                }
    466471        }
    467 
     472#endif
    468473        switch (sic.protocol) {
    469474        case IPPROTO_TCP:
     
    619624        if (likely(is_v4)) {
    620625                sfe_ipv4_create_rule(&sic);
    621         } else {
     626        }
     627#ifdef SFE_SUPPORT_IPV6
     628        else {
    622629                sfe_ipv6_create_rule(&sic);
    623630        }
    624 
     631#endif
    625632        /*
    626633         * If we had bridge ports then release them too.
     
    657664 *      Called for packets about to leave the box - either locally generated or forwarded from another interface
    658665 */
     666#ifdef SFE_SUPPORT_IPV6
    659667sfe_cm_ipv6_post_routing_hook(hooknum, ops, skb, in_unused, out, okfn)
    660668{
    661669        return sfe_cm_post_routing(skb, false);
    662670}
    663 
     671#endif
    664672#ifdef CONFIG_NF_CONNTRACK_EVENTS
    665673/*
     
    727735
    728736                sfe_ipv4_destroy_rule(&sid);
    729         } else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
     737        }
     738#ifdef SFE_SUPPORT_IPV6
     739        else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
    730740                sid.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6);
    731741                sid.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6);
    732742
    733743                sfe_ipv6_destroy_rule(&sid);
    734         } else {
     744        }
     745#endif
     746        else {
    735747                DEBUG_TRACE("ignoring non-IPv4 and non-IPv6 connection\n");
    736748        }
     
    874886                if (dev) {
    875887                        sfe_ipv4_destroy_all_rules_for_dev(dev);
     888#ifdef SFE_SUPPORT_IPV6
    876889                        sfe_ipv6_destroy_all_rules_for_dev(dev);
     890#endif
    877891                }
    878892                break;
     
    984998{
    985999        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1000#ifdef SFE_SUPPORT_IPV6
    9861001        sfe_ipv6_destroy_all_rules_for_dev(NULL);
     1002#endif
    9871003        return count;
    9881004}
     
    10381054        sc->inet_notifier.priority = 1;
    10391055        register_inetaddr_notifier(&sc->inet_notifier);
    1040 
    1041         sc->inet6_notifier.notifier_call = sfe_cm_inet6_event;
    1042         sc->inet6_notifier.priority = 1;
    1043         register_inet6addr_notifier(&sc->inet6_notifier);
     1056#ifdef SFE_SUPPORT_IPV6
     1057        if (register_inet6addr_notifier) {
     1058                sc->inet6_notifier.notifier_call = sfe_cm_inet6_event;
     1059                sc->inet6_notifier.priority = 1;
     1060                register_inet6addr_notifier(&sc->inet6_notifier);
     1061        }
     1062#endif
    10441063        /*
    10451064         * Register our netfilter hooks.
     
    10681087         */
    10691088        sfe_ipv4_register_sync_rule_callback(sfe_cm_sync_rule);
     1089#ifdef SFE_SUPPORT_IPV6
    10701090        sfe_ipv6_register_sync_rule_callback(sfe_cm_sync_rule);
     1091#endif
    10711092        fast_classifier_init();
    10721093
     
    10781099#endif
    10791100exit3:
    1080         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1101#ifdef SFE_SUPPORT_IPV6
     1102        if (unregister_inet6addr_notifier) {
     1103                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1104        }
     1105#endif
    10811106        unregister_inetaddr_notifier(&sc->inet_notifier);
    10821107        unregister_netdevice_notifier(&sc->dev_notifier);
     
    11101135         */
    11111136        sfe_ipv4_register_sync_rule_callback(NULL);
     1137#ifdef SFE_SUPPORT_IPV6
    11121138        sfe_ipv6_register_sync_rule_callback(NULL);
    1113 
     1139#endif
    11141140        /*
    11151141         * Unregister our receive callback.
     
    11261152         */
    11271153        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1154#ifdef SFE_SUPPORT_IPV6
    11281155        sfe_ipv6_destroy_all_rules_for_dev(NULL);
    1129 
     1156#endif
    11301157#ifdef CONFIG_NF_CONNTRACK_EVENTS
    11311158        nf_conntrack_unregister_notifier(&init_net, &sfe_cm_conntrack_notifier);
     
    11341161        nf_unregister_hooks(sfe_cm_ops_post_routing, ARRAY_SIZE(sfe_cm_ops_post_routing));
    11351162
    1136         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1163#ifdef SFE_SUPPORT_IPV6
     1164        if (unregister_inet6addr_notifier) {
     1165                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1166        }
     1167#endif
    11371168        unregister_inetaddr_notifier(&sc->inet_notifier);
    11381169        unregister_netdevice_notifier(&sc->dev_notifier);
  • src/linux/universal/linux-3.18/include/net/addrconf.h

    r32025 r32659  
    214214
    215215/* Device notifier */
    216 int register_inet6addr_notifier(struct notifier_block *nb);
    217 int unregister_inet6addr_notifier(struct notifier_block *nb);
     216int __weak register_inet6addr_notifier(struct notifier_block *nb);
     217int __weak unregister_inet6addr_notifier(struct notifier_block *nb);
    218218int inet6addr_notifier_call_chain(unsigned long val, void *v);
    219219
  • src/linux/universal/linux-3.18/net/shortcut-fe/fast-classifier.c

    r32641 r32659  
    106106        struct notifier_block dev_notifier;     /* Device notifier */
    107107        struct notifier_block inet_notifier;    /* IPv4 notifier */
     108#ifdef SFE_SUPPORT_IPV6
    108109        struct notifier_block inet6_notifier;   /* IPv6 notifier */
     110#endif
    109111        u32 exceptions[FAST_CL_EXCEPTION_MAX];
    110112};
     
    255257                ret = sfe_ipv4_recv(dev, skb);
    256258
    257         } else if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
     259        }
     260#ifdef SFE_SUPPORT_IPV6
     261
     262        else if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
    258263                struct inet6_dev *in_dev;
    259264
     
    278283                ret = sfe_ipv6_recv(dev, skb);
    279284
    280         } else {
     285        }
     286#endif
     287        else {
    281288                DEBUG_TRACE("not IP packet\n");
    282289        }
     
    786793                        sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP;
    787794                }
    788         } else {
     795        }
     796#ifdef SFE_SUPPORT_IPV6
     797        else {
    789798                u32 dscp;
    790799
     
    813822                }
    814823        }
    815 
     824#endif
    816825        switch (sic.protocol) {
    817826        case IPPROTO_TCP:
     
    10481057}
    10491058
     1059#ifdef SFE_SUPPORT_IPV6
    10501060/*
    10511061 * fast_classifier_ipv6_post_routing_hook()
     
    10561066        return fast_classifier_post_routing(skb, false);
    10571067}
    1058 
     1068#endif
    10591069/*
    10601070 * fast_classifier_update_mark()
     
    11211131                sid.dest_ip.ip = (__be32)orig_tuple.dst.u3.ip;
    11221132                is_v4 = true;
    1123         } else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
     1133        }
     1134#ifdef SFE_SUPPORT_IPV6
     1135        else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
    11241136                sid.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6);
    11251137                sid.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6);
    11261138                is_v4 = false;
    1127         } else {
     1139        }
     1140#endif
     1141        else {
    11281142                DEBUG_TRACE("ignoring non-IPv4 and non-IPv6 connection\n");
    11291143                return NOTIFY_DONE;
     
    12351249static struct nf_hook_ops fast_classifier_ops_post_routing[] __read_mostly = {
    12361250        SFE_IPV4_NF_POST_ROUTING_HOOK(__fast_classifier_ipv4_post_routing_hook),
     1251#ifdef SFE_SUPPORT_IPV6
    12371252        SFE_IPV6_NF_POST_ROUTING_HOOK(__fast_classifier_ipv6_post_routing_hook),
     1253#endif
    12381254};
    12391255
     
    13771393                if (dev) {
    13781394                        sfe_ipv4_destroy_all_rules_for_dev(dev);
     1395#ifdef SFE_SUPPORT_IPV6
    13791396                        sfe_ipv6_destroy_all_rules_for_dev(dev);
     1397#endif
    13801398                }
    13811399                break;
     
    15731591        register_inetaddr_notifier(&sc->inet_notifier);
    15741592
     1593#ifdef SFE_SUPPORT_IPV6
    15751594        sc->inet6_notifier.notifier_call = fast_classifier_inet6_event;
    15761595        sc->inet6_notifier.priority = 1;
    1577         register_inet6addr_notifier(&sc->inet6_notifier);
    1578 
     1596        if (register_inet6addr_notifier)
     1597                register_inet6addr_notifier(&sc->inet6_notifier);
     1598#endif
    15791599        /*
    15801600         * Register our netfilter hooks.
     
    16401660         */
    16411661        sfe_ipv4_register_sync_rule_callback(fast_classifier_sync_rule);
     1662#ifdef SFE_SUPPORT_IPV6
    16421663        sfe_ipv6_register_sync_rule_callback(fast_classifier_sync_rule);
     1664#endif
    16431665        return 0;
    16441666
     
    16581680exit3:
    16591681        unregister_inetaddr_notifier(&sc->inet_notifier);
    1660         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1682#ifdef SFE_SUPPORT_IPV6
     1683        if (unregister_inet6addr_notifier)
     1684                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1685#endif
    16611686        unregister_netdevice_notifier(&sc->dev_notifier);
    16621687
     
    16861711         */
    16871712        sfe_ipv4_register_sync_rule_callback(NULL);
     1713#ifdef SFE_SUPPORT_IPV6
    16881714        sfe_ipv6_register_sync_rule_callback(NULL);
     1715#endif
    16891716
    16901717        /*
     
    17021729         */
    17031730        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1731#ifdef SFE_SUPPORT_IPV6
    17041732        sfe_ipv6_destroy_all_rules_for_dev(NULL);
     1733#endif
     1734
    17051735
    17061736#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0))
     
    17221752        nf_unregister_hooks(fast_classifier_ops_post_routing, ARRAY_SIZE(fast_classifier_ops_post_routing));
    17231753
    1724         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1754#ifdef SFE_SUPPORT_IPV6
     1755        if (unregister_inet6addr_notifier)
     1756                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1757#endif
    17251758        unregister_inetaddr_notifier(&sc->inet_notifier);
    17261759        unregister_netdevice_notifier(&sc->dev_notifier);
  • src/linux/universal/linux-3.18/net/shortcut-fe/sfe_cm.c

    r32631 r32659  
    102102        struct notifier_block dev_notifier;     /* Device notifier */
    103103        struct notifier_block inet_notifier;    /* IPv4 notifier */
     104#ifdef SFE_SUPPORT_IPV6
    104105        struct notifier_block inet6_notifier;   /* IPv6 notifier */
     106#endif
    105107        u32 exceptions[SFE_CM_EXCEPTION_MAX];
    106108};
     
    168170        }
    169171
     172#ifdef SFE_SUPPORT_IPV6
    170173        if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
    171174                struct inet6_dev *in_dev;
     
    191194                return sfe_ipv6_recv(dev, skb);
    192195        }
    193 
     196#endif
    194197        DEBUG_TRACE("not IP packet\n");
    195198        return 0;
     
    438441                        sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP;
    439442                }
    440         } else {
     443        }
     444#ifdef SFE_SUPPORT_IPV6
     445        else {
    441446                u32 dscp;
    442447
     
    465470                }
    466471        }
    467 
     472#endif
    468473        switch (sic.protocol) {
    469474        case IPPROTO_TCP:
     
    619624        if (likely(is_v4)) {
    620625                sfe_ipv4_create_rule(&sic);
    621         } else {
     626        }
     627#ifdef SFE_SUPPORT_IPV6
     628        else {
    622629                sfe_ipv6_create_rule(&sic);
    623630        }
    624 
     631#endif
    625632        /*
    626633         * If we had bridge ports then release them too.
     
    657664 *      Called for packets about to leave the box - either locally generated or forwarded from another interface
    658665 */
     666#ifdef SFE_SUPPORT_IPV6
    659667sfe_cm_ipv6_post_routing_hook(hooknum, ops, skb, in_unused, out, okfn)
    660668{
    661669        return sfe_cm_post_routing(skb, false);
    662670}
    663 
     671#endif
    664672#ifdef CONFIG_NF_CONNTRACK_EVENTS
    665673/*
     
    727735
    728736                sfe_ipv4_destroy_rule(&sid);
    729         } else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
     737        }
     738#ifdef SFE_SUPPORT_IPV6
     739        else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
    730740                sid.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6);
    731741                sid.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6);
    732742
    733743                sfe_ipv6_destroy_rule(&sid);
    734         } else {
     744        }
     745#endif
     746        else {
    735747                DEBUG_TRACE("ignoring non-IPv4 and non-IPv6 connection\n");
    736748        }
     
    874886                if (dev) {
    875887                        sfe_ipv4_destroy_all_rules_for_dev(dev);
     888#ifdef SFE_SUPPORT_IPV6
    876889                        sfe_ipv6_destroy_all_rules_for_dev(dev);
     890#endif
    877891                }
    878892                break;
     
    984998{
    985999        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1000#ifdef SFE_SUPPORT_IPV6
    9861001        sfe_ipv6_destroy_all_rules_for_dev(NULL);
     1002#endif
    9871003        return count;
    9881004}
     
    10381054        sc->inet_notifier.priority = 1;
    10391055        register_inetaddr_notifier(&sc->inet_notifier);
    1040 
    1041         sc->inet6_notifier.notifier_call = sfe_cm_inet6_event;
    1042         sc->inet6_notifier.priority = 1;
    1043         register_inet6addr_notifier(&sc->inet6_notifier);
     1056#ifdef SFE_SUPPORT_IPV6
     1057        if (register_inet6addr_notifier) {
     1058                sc->inet6_notifier.notifier_call = sfe_cm_inet6_event;
     1059                sc->inet6_notifier.priority = 1;
     1060                register_inet6addr_notifier(&sc->inet6_notifier);
     1061        }
     1062#endif
    10441063        /*
    10451064         * Register our netfilter hooks.
     
    10681087         */
    10691088        sfe_ipv4_register_sync_rule_callback(sfe_cm_sync_rule);
     1089#ifdef SFE_SUPPORT_IPV6
    10701090        sfe_ipv6_register_sync_rule_callback(sfe_cm_sync_rule);
     1091#endif
    10711092        fast_classifier_init();
    10721093
     
    10781099#endif
    10791100exit3:
    1080         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1101#ifdef SFE_SUPPORT_IPV6
     1102        if (unregister_inet6addr_notifier) {
     1103                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1104        }
     1105#endif
    10811106        unregister_inetaddr_notifier(&sc->inet_notifier);
    10821107        unregister_netdevice_notifier(&sc->dev_notifier);
     
    11101135         */
    11111136        sfe_ipv4_register_sync_rule_callback(NULL);
     1137#ifdef SFE_SUPPORT_IPV6
    11121138        sfe_ipv6_register_sync_rule_callback(NULL);
    1113 
     1139#endif
    11141140        /*
    11151141         * Unregister our receive callback.
     
    11261152         */
    11271153        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1154#ifdef SFE_SUPPORT_IPV6
    11281155        sfe_ipv6_destroy_all_rules_for_dev(NULL);
    1129 
     1156#endif
    11301157#ifdef CONFIG_NF_CONNTRACK_EVENTS
    11311158        nf_conntrack_unregister_notifier(&init_net, &sfe_cm_conntrack_notifier);
     
    11341161        nf_unregister_hooks(sfe_cm_ops_post_routing, ARRAY_SIZE(sfe_cm_ops_post_routing));
    11351162
    1136         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1163#ifdef SFE_SUPPORT_IPV6
     1164        if (unregister_inet6addr_notifier) {
     1165                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1166        }
     1167#endif
    11371168        unregister_inetaddr_notifier(&sc->inet_notifier);
    11381169        unregister_netdevice_notifier(&sc->dev_notifier);
  • src/linux/universal/linux-3.2/include/net/addrconf.h

    r23703 r32659  
    172172
    173173/* Device notifier */
    174 extern int register_inet6addr_notifier(struct notifier_block *nb);
    175 extern int unregister_inet6addr_notifier(struct notifier_block *nb);
     174extern int __weak register_inet6addr_notifier(struct notifier_block *nb);
     175extern int __weak unregister_inet6addr_notifier(struct notifier_block *nb);
    176176
    177177/**
  • src/linux/universal/linux-3.2/net/shortcut-fe/fast-classifier.c

    r32658 r32659  
    106106        struct notifier_block dev_notifier;     /* Device notifier */
    107107        struct notifier_block inet_notifier;    /* IPv4 notifier */
     108#ifdef SFE_SUPPORT_IPV6
    108109        struct notifier_block inet6_notifier;   /* IPv6 notifier */
     110#endif
    109111        u32 exceptions[FAST_CL_EXCEPTION_MAX];
    110112};
     
    255257                ret = sfe_ipv4_recv(dev, skb);
    256258
    257         } else if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
     259        }
     260#ifdef SFE_SUPPORT_IPV6
     261
     262        else if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
    258263                struct inet6_dev *in_dev;
    259264
     
    278283                ret = sfe_ipv6_recv(dev, skb);
    279284
    280         } else {
     285        }
     286#endif
     287        else {
    281288                DEBUG_TRACE("not IP packet\n");
    282289        }
     
    789796                        sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP;
    790797                }
    791         } else {
     798        }
     799#ifdef SFE_SUPPORT_IPV6
     800        else {
    792801                u32 dscp;
    793802
     
    816825                }
    817826        }
    818 
     827#endif
    819828        switch (sic.protocol) {
    820829        case IPPROTO_TCP:
     
    10511060}
    10521061
     1062#ifdef SFE_SUPPORT_IPV6
    10531063/*
    10541064 * fast_classifier_ipv6_post_routing_hook()
     
    10591069        return fast_classifier_post_routing(skb, false);
    10601070}
    1061 
     1071#endif
    10621072/*
    10631073 * fast_classifier_update_mark()
     
    11241134                sid.dest_ip.ip = (__be32)orig_tuple.dst.u3.ip;
    11251135                is_v4 = true;
    1126         } else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
     1136        }
     1137#ifdef SFE_SUPPORT_IPV6
     1138        else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
    11271139                sid.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6);
    11281140                sid.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6);
    11291141                is_v4 = false;
    1130         } else {
     1142        }
     1143#endif
     1144        else {
    11311145                DEBUG_TRACE("ignoring non-IPv4 and non-IPv6 connection\n");
    11321146                return NOTIFY_DONE;
     
    12381252static struct nf_hook_ops fast_classifier_ops_post_routing[] __read_mostly = {
    12391253        SFE_IPV4_NF_POST_ROUTING_HOOK(__fast_classifier_ipv4_post_routing_hook),
     1254#ifdef SFE_SUPPORT_IPV6
    12401255        SFE_IPV6_NF_POST_ROUTING_HOOK(__fast_classifier_ipv6_post_routing_hook),
     1256#endif
    12411257};
    12421258
     
    13801396                if (dev) {
    13811397                        sfe_ipv4_destroy_all_rules_for_dev(dev);
     1398#ifdef SFE_SUPPORT_IPV6
    13821399                        sfe_ipv6_destroy_all_rules_for_dev(dev);
     1400#endif
    13831401                }
    13841402                break;
     
    15771595        register_inetaddr_notifier(&sc->inet_notifier);
    15781596
     1597#ifdef SFE_SUPPORT_IPV6
    15791598        sc->inet6_notifier.notifier_call = fast_classifier_inet6_event;
    15801599        sc->inet6_notifier.priority = 1;
    1581         register_inet6addr_notifier(&sc->inet6_notifier);
    1582 
     1600        if (register_inet6addr_notifier)
     1601                register_inet6addr_notifier(&sc->inet6_notifier);
     1602#endif
    15831603        /*
    15841604         * Register our netfilter hooks.
     
    16441664         */
    16451665        sfe_ipv4_register_sync_rule_callback(fast_classifier_sync_rule);
     1666#ifdef SFE_SUPPORT_IPV6
    16461667        sfe_ipv6_register_sync_rule_callback(fast_classifier_sync_rule);
     1668#endif
    16471669        return 0;
    16481670
     
    16621684exit3:
    16631685        unregister_inetaddr_notifier(&sc->inet_notifier);
    1664         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1686#ifdef SFE_SUPPORT_IPV6
     1687        if (unregister_inet6addr_notifier)
     1688                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1689#endif
    16651690        unregister_netdevice_notifier(&sc->dev_notifier);
    16661691
     
    16901715         */
    16911716        sfe_ipv4_register_sync_rule_callback(NULL);
     1717#ifdef SFE_SUPPORT_IPV6
    16921718        sfe_ipv6_register_sync_rule_callback(NULL);
     1719#endif
    16931720
    16941721        /*
     
    17061733         */
    17071734        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1735#ifdef SFE_SUPPORT_IPV6
    17081736        sfe_ipv6_destroy_all_rules_for_dev(NULL);
     1737#endif
     1738
    17091739
    17101740#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0))
     
    17261756        nf_unregister_hooks(fast_classifier_ops_post_routing, ARRAY_SIZE(fast_classifier_ops_post_routing));
    17271757
    1728         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1758#ifdef SFE_SUPPORT_IPV6
     1759        if (unregister_inet6addr_notifier)
     1760                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1761#endif
    17291762        unregister_inetaddr_notifier(&sc->inet_notifier);
    17301763        unregister_netdevice_notifier(&sc->dev_notifier);
  • src/linux/universal/linux-3.2/net/shortcut-fe/sfe_cm.c

    r32658 r32659  
    102102        struct notifier_block dev_notifier;     /* Device notifier */
    103103        struct notifier_block inet_notifier;    /* IPv4 notifier */
     104#ifdef SFE_SUPPORT_IPV6
    104105        struct notifier_block inet6_notifier;   /* IPv6 notifier */
     106#endif
    105107        u32 exceptions[SFE_CM_EXCEPTION_MAX];
    106108};
     
    168170        }
    169171
     172#ifdef SFE_SUPPORT_IPV6
    170173        if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
    171174                struct inet6_dev *in_dev;
     
    191194                return sfe_ipv6_recv(dev, skb);
    192195        }
    193 
     196#endif
    194197        DEBUG_TRACE("not IP packet\n");
    195198        return 0;
     
    438441                        sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP;
    439442                }
    440         } else {
     443        }
     444#ifdef SFE_SUPPORT_IPV6
     445        else {
    441446                u32 dscp;
    442447
     
    465470                }
    466471        }
    467 
     472#endif
    468473        switch (sic.protocol) {
    469474        case IPPROTO_TCP:
     
    619624        if (likely(is_v4)) {
    620625                sfe_ipv4_create_rule(&sic);
    621         } else {
     626        }
     627#ifdef SFE_SUPPORT_IPV6
     628        else {
    622629                sfe_ipv6_create_rule(&sic);
    623630        }
    624 
     631#endif
    625632        /*
    626633         * If we had bridge ports then release them too.
     
    657664 *      Called for packets about to leave the box - either locally generated or forwarded from another interface
    658665 */
     666#ifdef SFE_SUPPORT_IPV6
    659667sfe_cm_ipv6_post_routing_hook(hooknum, ops, skb, in_unused, out, okfn)
    660668{
    661669        return sfe_cm_post_routing(skb, false);
    662670}
    663 
     671#endif
    664672#ifdef CONFIG_NF_CONNTRACK_EVENTS
    665673/*
     
    727735
    728736                sfe_ipv4_destroy_rule(&sid);
    729         } else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
     737        }
     738#ifdef SFE_SUPPORT_IPV6
     739        else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
    730740                sid.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6);
    731741                sid.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6);
    732742
    733743                sfe_ipv6_destroy_rule(&sid);
    734         } else {
     744        }
     745#endif
     746        else {
    735747                DEBUG_TRACE("ignoring non-IPv4 and non-IPv6 connection\n");
    736748        }
     
    874886                if (dev) {
    875887                        sfe_ipv4_destroy_all_rules_for_dev(dev);
     888#ifdef SFE_SUPPORT_IPV6
    876889                        sfe_ipv6_destroy_all_rules_for_dev(dev);
     890#endif
    877891                }
    878892                break;
     
    984998{
    985999        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1000#ifdef SFE_SUPPORT_IPV6
    9861001        sfe_ipv6_destroy_all_rules_for_dev(NULL);
     1002#endif
    9871003        return count;
    9881004}
     
    10381054        sc->inet_notifier.priority = 1;
    10391055        register_inetaddr_notifier(&sc->inet_notifier);
    1040 
    1041         sc->inet6_notifier.notifier_call = sfe_cm_inet6_event;
    1042         sc->inet6_notifier.priority = 1;
    1043         register_inet6addr_notifier(&sc->inet6_notifier);
     1056#ifdef SFE_SUPPORT_IPV6
     1057        if (register_inet6addr_notifier) {
     1058                sc->inet6_notifier.notifier_call = sfe_cm_inet6_event;
     1059                sc->inet6_notifier.priority = 1;
     1060                register_inet6addr_notifier(&sc->inet6_notifier);
     1061        }
     1062#endif
    10441063        /*
    10451064         * Register our netfilter hooks.
     
    10681087         */
    10691088        sfe_ipv4_register_sync_rule_callback(sfe_cm_sync_rule);
     1089#ifdef SFE_SUPPORT_IPV6
    10701090        sfe_ipv6_register_sync_rule_callback(sfe_cm_sync_rule);
     1091#endif
    10711092        fast_classifier_init();
    10721093
     
    10781099#endif
    10791100exit3:
    1080         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1101#ifdef SFE_SUPPORT_IPV6
     1102        if (unregister_inet6addr_notifier) {
     1103                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1104        }
     1105#endif
    10811106        unregister_inetaddr_notifier(&sc->inet_notifier);
    10821107        unregister_netdevice_notifier(&sc->dev_notifier);
     
    11101135         */
    11111136        sfe_ipv4_register_sync_rule_callback(NULL);
     1137#ifdef SFE_SUPPORT_IPV6
    11121138        sfe_ipv6_register_sync_rule_callback(NULL);
    1113 
     1139#endif
    11141140        /*
    11151141         * Unregister our receive callback.
     
    11261152         */
    11271153        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1154#ifdef SFE_SUPPORT_IPV6
    11281155        sfe_ipv6_destroy_all_rules_for_dev(NULL);
    1129 
     1156#endif
    11301157#ifdef CONFIG_NF_CONNTRACK_EVENTS
    11311158        nf_conntrack_unregister_notifier(&init_net, &sfe_cm_conntrack_notifier);
     
    11341161        nf_unregister_hooks(sfe_cm_ops_post_routing, ARRAY_SIZE(sfe_cm_ops_post_routing));
    11351162
    1136         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1163#ifdef SFE_SUPPORT_IPV6
     1164        if (unregister_inet6addr_notifier) {
     1165                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1166        }
     1167#endif
    11371168        unregister_inetaddr_notifier(&sc->inet_notifier);
    11381169        unregister_netdevice_notifier(&sc->dev_notifier);
  • src/linux/universal/linux-4.4/.config_generic_selfmap

    r32518 r32659  
    15921592CONFIG_STRIP_ASM_SYMS=y
    15931593# CONFIG_UNUSED_SYMBOLS is not set
    1594 CONFIG_DEBUG_FS=y
     1594# CONFIG_DEBUG_FS is not set
    15951595# CONFIG_HEADERS_CHECK is not set
    15961596# CONFIG_DEBUG_SECTION_MISMATCH is not set
  • src/linux/universal/linux-4.4/include/net/addrconf.h

    r32025 r32659  
    248248
    249249/* Device notifier */
    250 int register_inet6addr_notifier(struct notifier_block *nb);
    251 int unregister_inet6addr_notifier(struct notifier_block *nb);
     250int __weak register_inet6addr_notifier(struct notifier_block *nb);
     251int __weak unregister_inet6addr_notifier(struct notifier_block *nb);
    252252int inet6addr_notifier_call_chain(unsigned long val, void *v);
    253253
  • src/linux/universal/linux-4.4/net/shortcut-fe/fast-classifier.c

    r32641 r32659  
    106106        struct notifier_block dev_notifier;     /* Device notifier */
    107107        struct notifier_block inet_notifier;    /* IPv4 notifier */
     108#ifdef SFE_SUPPORT_IPV6
    108109        struct notifier_block inet6_notifier;   /* IPv6 notifier */
     110#endif
    109111        u32 exceptions[FAST_CL_EXCEPTION_MAX];
    110112};
     
    255257                ret = sfe_ipv4_recv(dev, skb);
    256258
    257         } else if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
     259        }
     260#ifdef SFE_SUPPORT_IPV6
     261
     262        else if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
    258263                struct inet6_dev *in_dev;
    259264
     
    278283                ret = sfe_ipv6_recv(dev, skb);
    279284
    280         } else {
     285        }
     286#endif
     287        else {
    281288                DEBUG_TRACE("not IP packet\n");
    282289        }
     
    786793                        sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP;
    787794                }
    788         } else {
     795        }
     796#ifdef SFE_SUPPORT_IPV6
     797        else {
    789798                u32 dscp;
    790799
     
    813822                }
    814823        }
    815 
     824#endif
    816825        switch (sic.protocol) {
    817826        case IPPROTO_TCP:
     
    10481057}
    10491058
     1059#ifdef SFE_SUPPORT_IPV6
    10501060/*
    10511061 * fast_classifier_ipv6_post_routing_hook()
     
    10561066        return fast_classifier_post_routing(skb, false);
    10571067}
    1058 
     1068#endif
    10591069/*
    10601070 * fast_classifier_update_mark()
     
    11211131                sid.dest_ip.ip = (__be32)orig_tuple.dst.u3.ip;
    11221132                is_v4 = true;
    1123         } else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
     1133        }
     1134#ifdef SFE_SUPPORT_IPV6
     1135        else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
    11241136                sid.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6);
    11251137                sid.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6);
    11261138                is_v4 = false;
    1127         } else {
     1139        }
     1140#endif
     1141        else {
    11281142                DEBUG_TRACE("ignoring non-IPv4 and non-IPv6 connection\n");
    11291143                return NOTIFY_DONE;
     
    12351249static struct nf_hook_ops fast_classifier_ops_post_routing[] __read_mostly = {
    12361250        SFE_IPV4_NF_POST_ROUTING_HOOK(__fast_classifier_ipv4_post_routing_hook),
     1251#ifdef SFE_SUPPORT_IPV6
    12371252        SFE_IPV6_NF_POST_ROUTING_HOOK(__fast_classifier_ipv6_post_routing_hook),
     1253#endif
    12381254};
    12391255
     
    13771393                if (dev) {
    13781394                        sfe_ipv4_destroy_all_rules_for_dev(dev);
     1395#ifdef SFE_SUPPORT_IPV6
    13791396                        sfe_ipv6_destroy_all_rules_for_dev(dev);
     1397#endif
    13801398                }
    13811399                break;
     
    15731591        register_inetaddr_notifier(&sc->inet_notifier);
    15741592
     1593#ifdef SFE_SUPPORT_IPV6
    15751594        sc->inet6_notifier.notifier_call = fast_classifier_inet6_event;
    15761595        sc->inet6_notifier.priority = 1;
    1577         register_inet6addr_notifier(&sc->inet6_notifier);
    1578 
     1596        if (register_inet6addr_notifier)
     1597                register_inet6addr_notifier(&sc->inet6_notifier);
     1598#endif
    15791599        /*
    15801600         * Register our netfilter hooks.
     
    16401660         */
    16411661        sfe_ipv4_register_sync_rule_callback(fast_classifier_sync_rule);
     1662#ifdef SFE_SUPPORT_IPV6
    16421663        sfe_ipv6_register_sync_rule_callback(fast_classifier_sync_rule);
     1664#endif
    16431665        return 0;
    16441666
     
    16581680exit3:
    16591681        unregister_inetaddr_notifier(&sc->inet_notifier);
    1660         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1682#ifdef SFE_SUPPORT_IPV6
     1683        if (unregister_inet6addr_notifier)
     1684                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1685#endif
    16611686        unregister_netdevice_notifier(&sc->dev_notifier);
    16621687
     
    16861711         */
    16871712        sfe_ipv4_register_sync_rule_callback(NULL);
     1713#ifdef SFE_SUPPORT_IPV6
    16881714        sfe_ipv6_register_sync_rule_callback(NULL);
     1715#endif
    16891716
    16901717        /*
     
    17021729         */
    17031730        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1731#ifdef SFE_SUPPORT_IPV6
    17041732        sfe_ipv6_destroy_all_rules_for_dev(NULL);
     1733#endif
     1734
    17051735
    17061736#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0))
     
    17221752        nf_unregister_hooks(fast_classifier_ops_post_routing, ARRAY_SIZE(fast_classifier_ops_post_routing));
    17231753
    1724         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1754#ifdef SFE_SUPPORT_IPV6
     1755        if (unregister_inet6addr_notifier)
     1756                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1757#endif
    17251758        unregister_inetaddr_notifier(&sc->inet_notifier);
    17261759        unregister_netdevice_notifier(&sc->dev_notifier);
  • src/linux/universal/linux-4.4/net/shortcut-fe/sfe_cm.c

    r32631 r32659  
    102102        struct notifier_block dev_notifier;     /* Device notifier */
    103103        struct notifier_block inet_notifier;    /* IPv4 notifier */
     104#ifdef SFE_SUPPORT_IPV6
    104105        struct notifier_block inet6_notifier;   /* IPv6 notifier */
     106#endif
    105107        u32 exceptions[SFE_CM_EXCEPTION_MAX];
    106108};
     
    168170        }
    169171
     172#ifdef SFE_SUPPORT_IPV6
    170173        if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
    171174                struct inet6_dev *in_dev;
     
    191194                return sfe_ipv6_recv(dev, skb);
    192195        }
    193 
     196#endif
    194197        DEBUG_TRACE("not IP packet\n");
    195198        return 0;
     
    438441                        sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP;
    439442                }
    440         } else {
     443        }
     444#ifdef SFE_SUPPORT_IPV6
     445        else {
    441446                u32 dscp;
    442447
     
    465470                }
    466471        }
    467 
     472#endif
    468473        switch (sic.protocol) {
    469474        case IPPROTO_TCP:
     
    619624        if (likely(is_v4)) {
    620625                sfe_ipv4_create_rule(&sic);
    621         } else {
     626        }
     627#ifdef SFE_SUPPORT_IPV6
     628        else {
    622629                sfe_ipv6_create_rule(&sic);
    623630        }
    624 
     631#endif
    625632        /*
    626633         * If we had bridge ports then release them too.
     
    657664 *      Called for packets about to leave the box - either locally generated or forwarded from another interface
    658665 */
     666#ifdef SFE_SUPPORT_IPV6
    659667sfe_cm_ipv6_post_routing_hook(hooknum, ops, skb, in_unused, out, okfn)
    660668{
    661669        return sfe_cm_post_routing(skb, false);
    662670}
    663 
     671#endif
    664672#ifdef CONFIG_NF_CONNTRACK_EVENTS
    665673/*
     
    727735
    728736                sfe_ipv4_destroy_rule(&sid);
    729         } else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
     737        }
     738#ifdef SFE_SUPPORT_IPV6
     739        else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
    730740                sid.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6);
    731741                sid.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6);
    732742
    733743                sfe_ipv6_destroy_rule(&sid);
    734         } else {
     744        }
     745#endif
     746        else {
    735747                DEBUG_TRACE("ignoring non-IPv4 and non-IPv6 connection\n");
    736748        }
     
    874886                if (dev) {
    875887                        sfe_ipv4_destroy_all_rules_for_dev(dev);
     888#ifdef SFE_SUPPORT_IPV6
    876889                        sfe_ipv6_destroy_all_rules_for_dev(dev);
     890#endif
    877891                }
    878892                break;
     
    984998{
    985999        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1000#ifdef SFE_SUPPORT_IPV6
    9861001        sfe_ipv6_destroy_all_rules_for_dev(NULL);
     1002#endif
    9871003        return count;
    9881004}
     
    10381054        sc->inet_notifier.priority = 1;
    10391055        register_inetaddr_notifier(&sc->inet_notifier);
    1040 
    1041         sc->inet6_notifier.notifier_call = sfe_cm_inet6_event;
    1042         sc->inet6_notifier.priority = 1;
    1043         register_inet6addr_notifier(&sc->inet6_notifier);
     1056#ifdef SFE_SUPPORT_IPV6
     1057        if (register_inet6addr_notifier) {
     1058                sc->inet6_notifier.notifier_call = sfe_cm_inet6_event;
     1059                sc->inet6_notifier.priority = 1;
     1060                register_inet6addr_notifier(&sc->inet6_notifier);
     1061        }
     1062#endif
    10441063        /*
    10451064         * Register our netfilter hooks.
     
    10681087         */
    10691088        sfe_ipv4_register_sync_rule_callback(sfe_cm_sync_rule);
     1089#ifdef SFE_SUPPORT_IPV6
    10701090        sfe_ipv6_register_sync_rule_callback(sfe_cm_sync_rule);
     1091#endif
    10711092        fast_classifier_init();
    10721093
     
    10781099#endif
    10791100exit3:
    1080         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1101#ifdef SFE_SUPPORT_IPV6
     1102        if (unregister_inet6addr_notifier) {
     1103                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1104        }
     1105#endif
    10811106        unregister_inetaddr_notifier(&sc->inet_notifier);
    10821107        unregister_netdevice_notifier(&sc->dev_notifier);
     
    11101135         */
    11111136        sfe_ipv4_register_sync_rule_callback(NULL);
     1137#ifdef SFE_SUPPORT_IPV6
    11121138        sfe_ipv6_register_sync_rule_callback(NULL);
    1113 
     1139#endif
    11141140        /*
    11151141         * Unregister our receive callback.
     
    11261152         */
    11271153        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1154#ifdef SFE_SUPPORT_IPV6
    11281155        sfe_ipv6_destroy_all_rules_for_dev(NULL);
    1129 
     1156#endif
    11301157#ifdef CONFIG_NF_CONNTRACK_EVENTS
    11311158        nf_conntrack_unregister_notifier(&init_net, &sfe_cm_conntrack_notifier);
     
    11341161        nf_unregister_hooks(sfe_cm_ops_post_routing, ARRAY_SIZE(sfe_cm_ops_post_routing));
    11351162
    1136         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1163#ifdef SFE_SUPPORT_IPV6
     1164        if (unregister_inet6addr_notifier) {
     1165                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1166        }
     1167#endif
    11371168        unregister_inetaddr_notifier(&sc->inet_notifier);
    11381169        unregister_netdevice_notifier(&sc->dev_notifier);
  • src/linux/universal/linux-4.9/include/net/addrconf.h

    r32025 r32659  
    263263
    264264/* Device notifier */
    265 int register_inet6addr_notifier(struct notifier_block *nb);
    266 int unregister_inet6addr_notifier(struct notifier_block *nb);
     265int __weak register_inet6addr_notifier(struct notifier_block *nb);
     266int __weak unregister_inet6addr_notifier(struct notifier_block *nb);
    267267int inet6addr_notifier_call_chain(unsigned long val, void *v);
    268268
  • src/linux/universal/linux-4.9/net/shortcut-fe/fast-classifier.c

    r32631 r32659  
    106106        struct notifier_block dev_notifier;     /* Device notifier */
    107107        struct notifier_block inet_notifier;    /* IPv4 notifier */
     108#ifdef SFE_SUPPORT_IPV6
    108109        struct notifier_block inet6_notifier;   /* IPv6 notifier */
     110#endif
    109111        u32 exceptions[FAST_CL_EXCEPTION_MAX];
    110112};
     
    255257                ret = sfe_ipv4_recv(dev, skb);
    256258
    257         } else if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
     259        }
     260#ifdef SFE_SUPPORT_IPV6
     261
     262        else if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
    258263                struct inet6_dev *in_dev;
    259264
     
    278283                ret = sfe_ipv6_recv(dev, skb);
    279284
    280         } else {
     285        }
     286#endif
     287        else {
    281288                DEBUG_TRACE("not IP packet\n");
    282289        }
     
    786793                        sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP;
    787794                }
    788         } else {
     795        }
     796#ifdef SFE_SUPPORT_IPV6
     797        else {
    789798                u32 dscp;
    790799
     
    813822                }
    814823        }
    815 
     824#endif
    816825        switch (sic.protocol) {
    817826        case IPPROTO_TCP:
     
    10481057}
    10491058
     1059#ifdef SFE_SUPPORT_IPV6
    10501060/*
    10511061 * fast_classifier_ipv6_post_routing_hook()
     
    10561066        return fast_classifier_post_routing(skb, false);
    10571067}
    1058 
     1068#endif
    10591069/*
    10601070 * fast_classifier_update_mark()
     
    11211131                sid.dest_ip.ip = (__be32)orig_tuple.dst.u3.ip;
    11221132                is_v4 = true;
    1123         } else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
     1133        }
     1134#ifdef SFE_SUPPORT_IPV6
     1135        else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
    11241136                sid.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6);
    11251137                sid.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6);
    11261138                is_v4 = false;
    1127         } else {
     1139        }
     1140#endif
     1141        else {
    11281142                DEBUG_TRACE("ignoring non-IPv4 and non-IPv6 connection\n");
    11291143                return NOTIFY_DONE;
     
    12351249static struct nf_hook_ops fast_classifier_ops_post_routing[] __read_mostly = {
    12361250        SFE_IPV4_NF_POST_ROUTING_HOOK(__fast_classifier_ipv4_post_routing_hook),
     1251#ifdef SFE_SUPPORT_IPV6
    12371252        SFE_IPV6_NF_POST_ROUTING_HOOK(__fast_classifier_ipv6_post_routing_hook),
     1253#endif
    12381254};
    12391255
     
    13771393                if (dev) {
    13781394                        sfe_ipv4_destroy_all_rules_for_dev(dev);
     1395#ifdef SFE_SUPPORT_IPV6
    13791396                        sfe_ipv6_destroy_all_rules_for_dev(dev);
     1397#endif
    13801398                }
    13811399                break;
     
    15731591        register_inetaddr_notifier(&sc->inet_notifier);
    15741592
     1593#ifdef SFE_SUPPORT_IPV6
    15751594        sc->inet6_notifier.notifier_call = fast_classifier_inet6_event;
    15761595        sc->inet6_notifier.priority = 1;
    1577         register_inet6addr_notifier(&sc->inet6_notifier);
    1578 
     1596        if (register_inet6addr_notifier)
     1597                register_inet6addr_notifier(&sc->inet6_notifier);
     1598#endif
    15791599        /*
    15801600         * Register our netfilter hooks.
     
    16401660         */
    16411661        sfe_ipv4_register_sync_rule_callback(fast_classifier_sync_rule);
     1662#ifdef SFE_SUPPORT_IPV6
    16421663        sfe_ipv6_register_sync_rule_callback(fast_classifier_sync_rule);
     1664#endif
    16431665        return 0;
    16441666
     
    16581680exit3:
    16591681        unregister_inetaddr_notifier(&sc->inet_notifier);
    1660         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1682#ifdef SFE_SUPPORT_IPV6
     1683        if (unregister_inet6addr_notifier)
     1684                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1685#endif
    16611686        unregister_netdevice_notifier(&sc->dev_notifier);
    16621687
     
    16861711         */
    16871712        sfe_ipv4_register_sync_rule_callback(NULL);
     1713#ifdef SFE_SUPPORT_IPV6
    16881714        sfe_ipv6_register_sync_rule_callback(NULL);
     1715#endif
    16891716
    16901717        /*
     
    17021729         */
    17031730        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1731#ifdef SFE_SUPPORT_IPV6
    17041732        sfe_ipv6_destroy_all_rules_for_dev(NULL);
     1733#endif
     1734
    17051735
    17061736#if (LINUX_VERSION_CODE < KERNEL_VERSION(3, 13, 0))
     
    17221752        nf_unregister_hooks(fast_classifier_ops_post_routing, ARRAY_SIZE(fast_classifier_ops_post_routing));
    17231753
    1724         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1754#ifdef SFE_SUPPORT_IPV6
     1755        if (unregister_inet6addr_notifier)
     1756                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1757#endif
    17251758        unregister_inetaddr_notifier(&sc->inet_notifier);
    17261759        unregister_netdevice_notifier(&sc->dev_notifier);
  • src/linux/universal/linux-4.9/net/shortcut-fe/sfe_cm.c

    r32631 r32659  
    102102        struct notifier_block dev_notifier;     /* Device notifier */
    103103        struct notifier_block inet_notifier;    /* IPv4 notifier */
     104#ifdef SFE_SUPPORT_IPV6
    104105        struct notifier_block inet6_notifier;   /* IPv6 notifier */
     106#endif
    105107        u32 exceptions[SFE_CM_EXCEPTION_MAX];
    106108};
     
    168170        }
    169171
     172#ifdef SFE_SUPPORT_IPV6
    170173        if (likely(htons(ETH_P_IPV6) == skb->protocol)) {
    171174                struct inet6_dev *in_dev;
     
    191194                return sfe_ipv6_recv(dev, skb);
    192195        }
    193 
     196#endif
    194197        DEBUG_TRACE("not IP packet\n");
    195198        return 0;
     
    438441                        sic.flags |= SFE_CREATE_FLAG_REMARK_DSCP;
    439442                }
    440         } else {
     443        }
     444#ifdef SFE_SUPPORT_IPV6
     445        else {
    441446                u32 dscp;
    442447
     
    465470                }
    466471        }
    467 
     472#endif
    468473        switch (sic.protocol) {
    469474        case IPPROTO_TCP:
     
    619624        if (likely(is_v4)) {
    620625                sfe_ipv4_create_rule(&sic);
    621         } else {
     626        }
     627#ifdef SFE_SUPPORT_IPV6
     628        else {
    622629                sfe_ipv6_create_rule(&sic);
    623630        }
    624 
     631#endif
    625632        /*
    626633         * If we had bridge ports then release them too.
     
    657664 *      Called for packets about to leave the box - either locally generated or forwarded from another interface
    658665 */
     666#ifdef SFE_SUPPORT_IPV6
    659667sfe_cm_ipv6_post_routing_hook(hooknum, ops, skb, in_unused, out, okfn)
    660668{
    661669        return sfe_cm_post_routing(skb, false);
    662670}
    663 
     671#endif
    664672#ifdef CONFIG_NF_CONNTRACK_EVENTS
    665673/*
     
    727735
    728736                sfe_ipv4_destroy_rule(&sid);
    729         } else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
     737        }
     738#ifdef SFE_SUPPORT_IPV6
     739        else if (likely(nf_ct_l3num(ct) == AF_INET6)) {
    730740                sid.src_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.src.u3.in6);
    731741                sid.dest_ip.ip6[0] = *((struct sfe_ipv6_addr *)&orig_tuple.dst.u3.in6);
    732742
    733743                sfe_ipv6_destroy_rule(&sid);
    734         } else {
     744        }
     745#endif
     746        else {
    735747                DEBUG_TRACE("ignoring non-IPv4 and non-IPv6 connection\n");
    736748        }
     
    874886                if (dev) {
    875887                        sfe_ipv4_destroy_all_rules_for_dev(dev);
     888#ifdef SFE_SUPPORT_IPV6
    876889                        sfe_ipv6_destroy_all_rules_for_dev(dev);
     890#endif
    877891                }
    878892                break;
     
    984998{
    985999        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1000#ifdef SFE_SUPPORT_IPV6
    9861001        sfe_ipv6_destroy_all_rules_for_dev(NULL);
     1002#endif
    9871003        return count;
    9881004}
     
    10381054        sc->inet_notifier.priority = 1;
    10391055        register_inetaddr_notifier(&sc->inet_notifier);
    1040 
    1041         sc->inet6_notifier.notifier_call = sfe_cm_inet6_event;
    1042         sc->inet6_notifier.priority = 1;
    1043         register_inet6addr_notifier(&sc->inet6_notifier);
     1056#ifdef SFE_SUPPORT_IPV6
     1057        if (register_inet6addr_notifier) {
     1058                sc->inet6_notifier.notifier_call = sfe_cm_inet6_event;
     1059                sc->inet6_notifier.priority = 1;
     1060                register_inet6addr_notifier(&sc->inet6_notifier);
     1061        }
     1062#endif
    10441063        /*
    10451064         * Register our netfilter hooks.
     
    10681087         */
    10691088        sfe_ipv4_register_sync_rule_callback(sfe_cm_sync_rule);
     1089#ifdef SFE_SUPPORT_IPV6
    10701090        sfe_ipv6_register_sync_rule_callback(sfe_cm_sync_rule);
     1091#endif
    10711092        fast_classifier_init();
    10721093
     
    10781099#endif
    10791100exit3:
    1080         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1101#ifdef SFE_SUPPORT_IPV6
     1102        if (unregister_inet6addr_notifier) {
     1103                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1104        }
     1105#endif
    10811106        unregister_inetaddr_notifier(&sc->inet_notifier);
    10821107        unregister_netdevice_notifier(&sc->dev_notifier);
     
    11101135         */
    11111136        sfe_ipv4_register_sync_rule_callback(NULL);
     1137#ifdef SFE_SUPPORT_IPV6
    11121138        sfe_ipv6_register_sync_rule_callback(NULL);
    1113 
     1139#endif
    11141140        /*
    11151141         * Unregister our receive callback.
     
    11261152         */
    11271153        sfe_ipv4_destroy_all_rules_for_dev(NULL);
     1154#ifdef SFE_SUPPORT_IPV6
    11281155        sfe_ipv6_destroy_all_rules_for_dev(NULL);
    1129 
     1156#endif
    11301157#ifdef CONFIG_NF_CONNTRACK_EVENTS
    11311158        nf_conntrack_unregister_notifier(&init_net, &sfe_cm_conntrack_notifier);
     
    11341161        nf_unregister_hooks(sfe_cm_ops_post_routing, ARRAY_SIZE(sfe_cm_ops_post_routing));
    11351162
    1136         unregister_inet6addr_notifier(&sc->inet6_notifier);
     1163#ifdef SFE_SUPPORT_IPV6
     1164        if (unregister_inet6addr_notifier) {
     1165                unregister_inet6addr_notifier(&sc->inet6_notifier);
     1166        }
     1167#endif
    11371168        unregister_inetaddr_notifier(&sc->inet_notifier);
    11381169        unregister_netdevice_notifier(&sc->dev_notifier);
Note: See TracChangeset for help on using the changeset viewer.