/* Copyright (C) 2021-2022 MaxLinear, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License, as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, see . SPDX-License-Identifier: GPL-2.0-or-later */ #ifndef _BR_COMPAT_H #define _BR_COMPAT_H #include #include #include extern int br_compat_multicast_add_port(void *port); extern void br_compat_multicast_del_port(void *port); extern void br_compat_multicast_enable_port(void *port); extern void br_compat_multicast_disable_port(void *port); extern void br_compat_multicast_init(void *br); extern void br_compat_multicast_open(void *br); extern void br_compat_multicast_stop(void *br); extern void br_compat_multicast_dev_del(void *br); extern int br_compat_multicast_toggle(void *br, unsigned long val); extern int br_compat_multicast_set_querier(void *br, unsigned long val); extern int br_compat_multicast_set_hash_max(void *br, unsigned long val); extern int br_compat_multicast_set_igmp_version(void *br, unsigned long val); extern int br_compat_multicast_init_stats(void *br); extern int br_compat_bridge_create(struct net_device *dev, void **br_data); extern int br_compat_bridge_port_create(void* br_data, struct net_device *dev, void** br_port); extern int br_compat_multicast_add_group(void *br_ptr, void* port_ptr, struct br_ip *group, const unsigned char *src); extern int br_compat_multicast_leave_group(void *br_ptr, void* port_ptr, struct br_ip *group, const unsigned char *src); extern int br_compat_set_port_flag(void *brcompat_data, unsigned long flag, unsigned long mask); extern void br_compat_multicast_set_query_use_ifaddr(void *br, unsigned long val); extern void br_compat_multicast_set_last_member_cnt(void *br, unsigned long val); extern void br_compat_multicast_set_last_member_intvl(void *br, unsigned long val); extern void br_compat_multicast_set_membership_intvl(void *br, unsigned long val); extern void br_compat_multicast_set_query_intvl(void *br, unsigned long val); extern void br_compat_multicast_set_query_response_intvl(void *br, unsigned long val); extern int br_compat_get_port_flag(void *brcompat_data, unsigned long *flag, unsigned long mask); extern void br_compat_multicast_get_querier(void *br, unsigned long *val); extern void br_compat_multicast_get_igmp_version(void *br, unsigned long *val); extern void br_compat_multicast_get_query_use_ifaddr(void *br, unsigned long *val); extern void br_compat_multicast_get_last_member_cnt(void *br, unsigned long *val); extern void br_compat_multicast_get_last_member_intvl(void *br, unsigned long *val); extern void br_compat_multicast_get_membership_intvl(void *br, unsigned long *val); extern void br_compat_multicast_get_query_intvl(void *br, unsigned long *val); extern void br_compat_multicast_get_query_response_intvl(void *br, unsigned long *val); extern int br_compat_multicast_fill_info(void *br, struct sk_buff *skb, const struct net_device *br_dev); extern int br_compat_multicast_fill_slave_info(void *p, struct sk_buff *skb, const struct net_device *br_dev, const struct net_device *dev); #if IS_ENABLED(CONFIG_IPV6) extern int br_compat_multicast_set_mld_version(void *br, unsigned long val); extern void br_compat_multicast_get_mld_version(void *br, unsigned long *val); #endif extern int br_compat_get_mtu_set_by_user(struct net_device *dev); extern int br_compat_set_mtu_set_by_user(struct net_device *dev, int val); /* * This hook is used to get a struct net_bridge (cast required) from Open vSwitch device. * brcompat module initializes this hook after loading. */ extern void *(*br_compat_get_bridge_hook)(struct net_device *dev); extern struct net_bridge_port *(*ovs_port_get_rcu)(const struct net_device *dev); #endif