You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
net/bridge: Add 'hairpin' port forwarding mode
This patch adds a 'hairpin' (also called 'reflective relay') mode port configuration to the Linux Ethernet bridge kernel module. A bridge supporting hairpin forwarding mode can send frames back out through the port the frame was received on. Hairpin mode is required to support basic VEPA (Virtual Ethernet Port Aggregator) capabilities. You can find additional information on VEPA here: http://tech.groups.yahoo.com/group/evb/ http://www.ieee802.org/1/files/public/docs2009/new-hudson-vepa_seminar-20090514d.pdf http://www.internet2.edu/presentations/jt2009jul/20090719-congdon.pdf An additional patch 'bridge-utils: Add 'hairpin' port forwarding mode' is provided to allow configuring hairpin mode from userspace tools. Signed-off-by: Paul Congdon <paul.congdon@hp.com> Signed-off-by: Anna Fischer <anna.fischer@hp.com> Acked-by: Arnd Bergmann <arnd@arndb.de> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
8dd07086a1
commit
3982d3d28b
@@ -143,6 +143,22 @@ static ssize_t store_flush(struct net_bridge_port *p, unsigned long v)
|
||||
}
|
||||
static BRPORT_ATTR(flush, S_IWUSR, NULL, store_flush);
|
||||
|
||||
static ssize_t show_hairpin_mode(struct net_bridge_port *p, char *buf)
|
||||
{
|
||||
int hairpin_mode = (p->flags & BR_HAIRPIN_MODE) ? 1 : 0;
|
||||
return sprintf(buf, "%d\n", hairpin_mode);
|
||||
}
|
||||
static ssize_t store_hairpin_mode(struct net_bridge_port *p, unsigned long v)
|
||||
{
|
||||
if (v)
|
||||
p->flags |= BR_HAIRPIN_MODE;
|
||||
else
|
||||
p->flags &= ~BR_HAIRPIN_MODE;
|
||||
return 0;
|
||||
}
|
||||
static BRPORT_ATTR(hairpin_mode, S_IRUGO | S_IWUSR,
|
||||
show_hairpin_mode, store_hairpin_mode);
|
||||
|
||||
static struct brport_attribute *brport_attrs[] = {
|
||||
&brport_attr_path_cost,
|
||||
&brport_attr_priority,
|
||||
@@ -159,6 +175,7 @@ static struct brport_attribute *brport_attrs[] = {
|
||||
&brport_attr_forward_delay_timer,
|
||||
&brport_attr_hold_timer,
|
||||
&brport_attr_flush,
|
||||
&brport_attr_hairpin_mode,
|
||||
NULL
|
||||
};
|
||||
|
||||
|
||||
Reference in New Issue
Block a user