Page MenuHomeFreeBSD

D28487.1775970374.diff
No OneTemporary

Size
2 KB
Referenced Files
None
Subscribers
None

D28487.1775970374.diff

diff --git a/share/man/man4/ng_bridge.4 b/share/man/man4/ng_bridge.4
--- a/share/man/man4/ng_bridge.4
+++ b/share/man/man4/ng_bridge.4
@@ -109,6 +109,22 @@
Frames with unknown MACs are always sent out to
.Ar uplink
hooks, so no functionality is lost.
+.Pp
+Frames with unknown destination MAC addresses are replicated to any
+available hook, unless the first connected hook is an
+.Ar uplink
+hook.
+In this case the node assumes, that all unknown MAC addresses are
+located soley on the
+.Ar uplink
+hooks and only those hooks will be used to send out frames with
+unknown destination MACs.
+If the first connected hook is an
+.Ar link
+hook, the node will replicate such frames to all types of hooks,
+even if
+.Ar uplink
+hooks are connected later.
.Sh CONTROL MESSAGES
This node type supports the generic control messages, plus the
following:
diff --git a/sys/netgraph/ng_bridge.c b/sys/netgraph/ng_bridge.c
--- a/sys/netgraph/ng_bridge.c
+++ b/sys/netgraph/ng_bridge.c
@@ -105,7 +105,8 @@
u_int numBuckets; /* num buckets in table */
u_int hashMask; /* numBuckets - 1 */
int numLinks; /* num connected links */
- int persistent; /* can exist w/o hooks */
+ unsigned int persistent : 1, /* can exist w/o hooks */
+ sendUnknown : 1;/* links receive unknowns by default */
struct callout timer; /* one second periodic timer */
};
typedef struct ng_bridge_private *priv_p;
@@ -309,6 +310,7 @@
priv->conf.loopTimeout = DEFAULT_LOOP_TIMEOUT;
priv->conf.maxStaleness = DEFAULT_MAX_STALENESS;
priv->conf.minStableAge = DEFAULT_MIN_STABLE_AGE;
+ priv->sendUnknown = 1; /* classic bridge */
/*
* This node has all kinds of stuff that could be screwed by SMP.
@@ -371,9 +373,11 @@
if (isUplink) {
link->learnMac = 0;
link->sendUnknown = 1;
+ if (priv->numLinks == 0) /* if the first link is an uplink */
+ priv->sendUnknown = 0; /* switch to restrictive mode */
} else {
link->learnMac = 1;
- link->sendUnknown = 1;
+ link->sendUnknown = priv->sendUnknown;
}
NG_HOOK_SET_PRIVATE(hook, link);

File Metadata

Mime Type
text/plain
Expires
Sun, Apr 12, 5:06 AM (4 h, 19 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28328742
Default Alt Text
D28487.1775970374.diff (2 KB)

Event Timeline