--- zzzz-none-000/linux-4.4.60/include/linux/if_bridge.h 2017-04-08 07:53:53.000000000 +0000 +++ scorpion-7490-727/linux-4.4.60/include/linux/if_bridge.h 2021-02-04 17:41:59.000000000 +0000 @@ -45,10 +45,28 @@ #define BR_PROXYARP BIT(8) #define BR_LEARNING_SYNC BIT(9) #define BR_PROXYARP_WIFI BIT(10) +#define BR_ISOLATE_MODE BIT(11) +#define BR_MULTICAST_TO_UNICAST BIT(12) #define BR_DEFAULT_AGEING_TIME (300 * HZ) +//TODO AVM_JBA_UNICAST->UCAST +#define BR_MULTICAST_TO_UNICAST BIT(12) + +struct net_bridge_port; extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __user *)); +extern struct net_device *br_port_dev_get(struct net_device *dev, + unsigned char *addr, + struct sk_buff *skb, + unsigned int cookie); +extern void br_refresh_fdb_entry(struct net_device *dev, const char *addr); +extern void br_dev_update_stats(struct net_device *dev, + struct rtnl_link_stats64 *nlstats); +extern struct net_bridge_fdb_entry *br_fdb_has_entry(struct net_device *dev, + const char *addr, + __u16 vid); +extern void br_fdb_update_register_notify(struct notifier_block *nb); +extern void br_fdb_update_unregister_notify(struct notifier_block *nb); typedef int br_should_route_hook_t(struct sk_buff *skb); extern br_should_route_hook_t __rcu *br_should_route_hook; @@ -76,4 +94,36 @@ } #endif +typedef struct net_bridge_port *br_port_dev_get_hook_t(struct net_device *dev, + struct sk_buff *skb, + unsigned char *addr, + unsigned int cookie); +extern br_port_dev_get_hook_t __rcu *br_port_dev_get_hook; + +typedef void (br_notify_hook_t)(int group, int event, const void *ptr); +extern br_notify_hook_t __rcu *br_notify_hook; +typedef int (br_multicast_handle_hook_t)(const struct net_bridge_port *src, + struct sk_buff *skb); +extern br_multicast_handle_hook_t __rcu *br_multicast_handle_hook; + +#define BR_FDB_EVENT_ADD 0x01 +#define BR_FDB_EVENT_DEL 0x02 +struct br_fdb_event { + unsigned char addr[6]; + unsigned char is_local; + struct net_device *dev; + struct net_bridge *br; + struct net_device *orig_dev; +}; +extern void br_fdb_register_notify(struct notifier_block *nb); +extern void br_fdb_unregister_notify(struct notifier_block *nb); +extern struct net_device *br_fdb_bridge_dev_get_and_hold(struct net_bridge *br); + +typedef struct net_bridge_port *br_get_dst_hook_t( + const struct net_bridge_port *src, + struct sk_buff **skb); +extern br_get_dst_hook_t __rcu *br_get_dst_hook; + +typedef void (br_notify_hook_t)(int group, int event, const void *ptr); +extern br_notify_hook_t __rcu *br_notify_hook; #endif