blob: 808dcb8cc04fbeee82f00bab944ff45e8087078a [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001/*
2 * Linux ethernet bridge
3 *
4 * Authors:
5 * Lennert Buytenhek <buytenh@gnu.org>
6 *
Linus Torvalds1da177e2005-04-16 15:20:36 -07007 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License
9 * as published by the Free Software Foundation; either version
10 * 2 of the License, or (at your option) any later version.
11 */
Linus Torvalds1da177e2005-04-16 15:20:36 -070012#ifndef _LINUX_IF_BRIDGE_H
13#define _LINUX_IF_BRIDGE_H
14
Linus Torvalds1da177e2005-04-16 15:20:36 -070015
16#include <linux/netdevice.h>
David Howells607ca462012-10-13 10:46:48 +010017#include <uapi/linux/if_bridge.h>
Linus Torvalds1da177e2005-04-16 15:20:36 -070018
Linus Lüssing07f8ac42014-06-07 18:26:28 +020019struct br_ip {
20 union {
21 __be32 ip4;
22#if IS_ENABLED(CONFIG_IPV6)
23 struct in6_addr ip6;
24#endif
25 } u;
26 __be16 proto;
27 __u16 vid;
28};
29
30struct br_ip_list {
31 struct list_head list;
32 struct br_ip addr;
33};
34
Eric W. Biederman881d9662007-09-17 11:56:21 -070035extern void brioctl_set(int (*ioctl_hook)(struct net *, unsigned int, void __user *));
Eric Dumazeta386f992010-11-15 06:38:11 +000036
Florian Westphal2f46e072011-01-11 23:55:51 +010037typedef int br_should_route_hook_t(struct sk_buff *skb);
Eric Dumazeta386f992010-11-15 06:38:11 +000038extern br_should_route_hook_t __rcu *br_should_route_hook;
Linus Lüssingf941a6d2014-07-07 05:41:16 +020039
40#if IS_ENABLED(CONFIG_BRIDGE) && IS_ENABLED(CONFIG_BRIDGE_IGMP_SNOOPING)
Linus Lüssing07f8ac42014-06-07 18:26:28 +020041int br_multicast_list_adjacent(struct net_device *dev,
42 struct list_head *br_ip_list);
Linus Lüssingc34963e2014-07-07 05:41:17 +020043bool br_multicast_has_querier_anywhere(struct net_device *dev, int proto);
Linus Lüssing2cd41432014-06-07 18:26:29 +020044bool br_multicast_has_querier_adjacent(struct net_device *dev, int proto);
Linus Lüssingf941a6d2014-07-07 05:41:16 +020045#else
46static inline int br_multicast_list_adjacent(struct net_device *dev,
47 struct list_head *br_ip_list)
48{
49 return 0;
50}
Linus Lüssingc34963e2014-07-07 05:41:17 +020051static inline bool br_multicast_has_querier_anywhere(struct net_device *dev,
52 int proto)
53{
54 return false;
55}
Linus Lüssingf941a6d2014-07-07 05:41:16 +020056static inline bool br_multicast_has_querier_adjacent(struct net_device *dev,
57 int proto)
58{
59 return false;
60}
61#endif
Linus Torvalds1da177e2005-04-16 15:20:36 -070062
63#endif