diff options
author | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-12-15 22:22:29 +0100 |
---|---|---|
committer | cinap_lenrek <cinap_lenrek@felloff.net> | 2017-12-15 22:22:29 +0100 |
commit | 9fd8894fec87ccd326997b84a2be431af8764cce (patch) | |
tree | df8bdfa139b48cefa908f208d44b1ecb326150f5 /sys/src/9 | |
parent | 4ad70e6055093123f0611269ca7e8e201257e5db (diff) |
ether: allow spoofing of source mac address for bridges; used by vmx
to implement layer 2 bridges in userspace, we disable to auto filling
of the source mac address when bridge mode is enabled on the
connection.
Diffstat (limited to 'sys/src/9')
-rw-r--r-- | sys/src/9/kw/devether.c | 3 | ||||
-rw-r--r-- | sys/src/9/mtx/devether.c | 3 | ||||
-rw-r--r-- | sys/src/9/omap/devether.c | 3 | ||||
-rw-r--r-- | sys/src/9/pc/devether.c | 3 | ||||
-rw-r--r-- | sys/src/9/ppc/devether.c | 3 | ||||
-rw-r--r-- | sys/src/9/sgi/devether.c | 3 | ||||
-rw-r--r-- | sys/src/9/teg2/devether.c | 3 | ||||
-rw-r--r-- | sys/src/9/zynq/devether.c | 3 |
8 files changed, 16 insertions, 8 deletions
diff --git a/sys/src/9/kw/devether.c b/sys/src/9/kw/devether.c index ef1f2708f..e6d6fdb21 100644 --- a/sys/src/9/kw/devether.c +++ b/sys/src/9/kw/devether.c @@ -281,7 +281,8 @@ etherwrite(Chan* chan, void* buf, long n, vlong) nexterror(); } memmove(bp->rp, buf, n); - memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); + if(!ether->f[NETID(chan->qid.path)]->bridge) + memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); poperror(); bp->wp += n; diff --git a/sys/src/9/mtx/devether.c b/sys/src/9/mtx/devether.c index 657b22ccf..cdc74061c 100644 --- a/sys/src/9/mtx/devether.c +++ b/sys/src/9/mtx/devether.c @@ -266,7 +266,8 @@ etherwrite(Chan* chan, void* buf, long n, vlong) nexterror(); } memmove(bp->rp, buf, n); - memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); + if(!ether->f[NETID(chan->qid.path)]->bridge) + memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); poperror(); bp->wp += n; diff --git a/sys/src/9/omap/devether.c b/sys/src/9/omap/devether.c index 152be7ef6..096ec39ee 100644 --- a/sys/src/9/omap/devether.c +++ b/sys/src/9/omap/devether.c @@ -279,7 +279,8 @@ etherwrite(Chan* chan, void* buf, long n, vlong) nexterror(); } memmove(bp->rp, buf, n); - memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); + if(!ether->f[NETID(chan->qid.path)]->bridge) + memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); poperror(); bp->wp += n; diff --git a/sys/src/9/pc/devether.c b/sys/src/9/pc/devether.c index 16d9d9e5a..2d2f4ac2e 100644 --- a/sys/src/9/pc/devether.c +++ b/sys/src/9/pc/devether.c @@ -286,7 +286,8 @@ etherwrite(Chan* chan, void* buf, long n, vlong) nexterror(); } memmove(bp->rp, buf, n); - memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); + if(!ether->f[NETID(chan->qid.path)]->bridge) + memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); poperror(); bp->wp += n; diff --git a/sys/src/9/ppc/devether.c b/sys/src/9/ppc/devether.c index 5e1179b43..cacc27f4b 100644 --- a/sys/src/9/ppc/devether.c +++ b/sys/src/9/ppc/devether.c @@ -265,7 +265,8 @@ etherwrite(Chan* chan, void* buf, long n, vlong) nexterror(); } memmove(bp->rp, buf, n); - memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); + if(!ether->f[NETID(chan->qid.path)]->bridge) + memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); poperror(); bp->wp += n; diff --git a/sys/src/9/sgi/devether.c b/sys/src/9/sgi/devether.c index 6339b99ef..b51588304 100644 --- a/sys/src/9/sgi/devether.c +++ b/sys/src/9/sgi/devether.c @@ -285,7 +285,8 @@ etherwrite(Chan* chan, void* buf, long n, vlong) nexterror(); } memmove(bp->rp, buf, n); - memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); + if(!ether->f[NETID(chan->qid.path)]->bridge) + memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); poperror(); bp->wp += n; diff --git a/sys/src/9/teg2/devether.c b/sys/src/9/teg2/devether.c index 6a52d6b56..b6b5ddf2b 100644 --- a/sys/src/9/teg2/devether.c +++ b/sys/src/9/teg2/devether.c @@ -277,7 +277,8 @@ etherwrite(Chan* chan, void* buf, long n, vlong) nexterror(); } memmove(bp->rp, buf, n); - memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); + if(!ether->f[NETID(chan->qid.path)]->bridge) + memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); poperror(); bp->wp += n; diff --git a/sys/src/9/zynq/devether.c b/sys/src/9/zynq/devether.c index d3b6e9b64..79d6b4153 100644 --- a/sys/src/9/zynq/devether.c +++ b/sys/src/9/zynq/devether.c @@ -285,7 +285,8 @@ etherwrite(Chan* chan, void* buf, long n, vlong) nexterror(); } memmove(bp->rp, buf, n); - memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); + if(!ether->f[NETID(chan->qid.path)]->bridge) + memmove(bp->rp+Eaddrlen, ether->ea, Eaddrlen); poperror(); bp->wp += n; |