Add macvlan support
X-Gentoo-Bug: 384029 X-Gentoo-Bug-URL: http://bugs.gentoo.org/show_bug.cgi?id=384029
This commit is contained in:
parent
b1da4dcb99
commit
f94e883633
@ -581,6 +581,18 @@
|
|||||||
# NOTE: depend functions only work in /etc/conf.d/net
|
# NOTE: depend functions only work in /etc/conf.d/net
|
||||||
# and not in profile configs such as /etc/conf.d/net.foo
|
# and not in profile configs such as /etc/conf.d/net.foo
|
||||||
|
|
||||||
|
# MAC-VLAN support
|
||||||
|
# The following configuration can be used to create a new interface 'macvlan0'
|
||||||
|
# linked to 'eth0'
|
||||||
|
#macvlan_macvlan0="eth0"
|
||||||
|
|
||||||
|
# MAC-VLAN mode (private, vepa, bridge, passtru)
|
||||||
|
#mode_macvlan0="private"
|
||||||
|
|
||||||
|
# IP address, MAC address, ... are configured as a normal interface
|
||||||
|
#config_macvlan0="192.168.20.20/24"
|
||||||
|
#mac_macvlan0="00:50:06:20:20:20"
|
||||||
|
|
||||||
#-----------------------------------------------------------------------------
|
#-----------------------------------------------------------------------------
|
||||||
# Bonding
|
# Bonding
|
||||||
# For link bonding/trunking on 2.4 kernels, or kernels without sysfs
|
# For link bonding/trunking on 2.4 kernels, or kernels without sysfs
|
||||||
|
@ -13,7 +13,7 @@ SRCS-Linux= iwconfig.sh.in
|
|||||||
INC-Linux= adsl.sh apipa.sh arping.sh bonding.sh br2684ctl.sh bridge.sh \
|
INC-Linux= adsl.sh apipa.sh arping.sh bonding.sh br2684ctl.sh bridge.sh \
|
||||||
ccwgroup.sh clip.sh ethtool.sh iproute2.sh ifplugd.sh ip6to4.sh \
|
ccwgroup.sh clip.sh ethtool.sh iproute2.sh ifplugd.sh ip6to4.sh \
|
||||||
ipppd.sh iwconfig.sh netplugd.sh pppd.sh pump.sh tuntap.sh udhcpc.sh \
|
ipppd.sh iwconfig.sh netplugd.sh pppd.sh pump.sh tuntap.sh udhcpc.sh \
|
||||||
vlan.sh
|
vlan.sh macvlan.sh
|
||||||
|
|
||||||
SRCS-NetBSD=
|
SRCS-NetBSD=
|
||||||
INC-NetBSD= ifwatchd.sh
|
INC-NetBSD= ifwatchd.sh
|
||||||
|
69
net/macvlan.sh
Normal file
69
net/macvlan.sh
Normal file
@ -0,0 +1,69 @@
|
|||||||
|
# 2011-09-22 Stef Simoens <stef@bgs.org>
|
||||||
|
# based on vlan.sh & tuntap.sh
|
||||||
|
# Copyright (c) 2007-2008 Roy Marples <roy@marples.name>
|
||||||
|
# All rights reserved. Released under the 2-clause BSD license.
|
||||||
|
|
||||||
|
_ip()
|
||||||
|
{
|
||||||
|
if [ -x /bin/ip ]; then
|
||||||
|
echo /bin/ip
|
||||||
|
else
|
||||||
|
echo /sbin/ip
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
macvlan_depend()
|
||||||
|
{
|
||||||
|
program $(_ip)
|
||||||
|
after interface
|
||||||
|
before dhcp macchanger
|
||||||
|
}
|
||||||
|
|
||||||
|
_is_macvlan()
|
||||||
|
{
|
||||||
|
[ -n "$(export RC_SVCNAME="net.${IFACE}"; service_get_value macvlan)" ]
|
||||||
|
}
|
||||||
|
|
||||||
|
_check_macvlan()
|
||||||
|
{
|
||||||
|
if [ ! -d /sys/module/macvlan ]; then
|
||||||
|
modprobe macvlan
|
||||||
|
if [ ! -d /sys/module/macvlan ]; then
|
||||||
|
eerror "MAC-VLAN support is not present in this kernel"
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
macvlan_pre_start()
|
||||||
|
{
|
||||||
|
# MAC-VLAN needs an existing interface to link to
|
||||||
|
local macvlan=
|
||||||
|
eval macvlan=\$macvlan_${IFVAR}
|
||||||
|
[ -z "${macvlan}" ] && return 0
|
||||||
|
|
||||||
|
_check_macvlan || return 1
|
||||||
|
|
||||||
|
# optional mode, default to "private"
|
||||||
|
local mode=
|
||||||
|
eval mode=\$mode_${IFVAR}
|
||||||
|
[ -z "${mode}" ] && mode="private"
|
||||||
|
|
||||||
|
ebegin "Creating MAC-VLAN ${IFACE} to ${macvlan}"
|
||||||
|
e="$(ip link add link "${macvlan}" name "${IFACE}" type macvlan mode "${mode}" 2>&1 1>/dev/null)"
|
||||||
|
if [ -n "${e}" ]; then
|
||||||
|
eend 1 "${e}"
|
||||||
|
else
|
||||||
|
eend 0 && service_set_value macvlan "${macvlan}"
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
macvlan_post_stop()
|
||||||
|
{
|
||||||
|
_is_macvlan || return 0
|
||||||
|
|
||||||
|
ebegin "Removing MAC-VLAN ${IFACE}"
|
||||||
|
ip link delete "${IFACE}" type macvlan >/dev/null
|
||||||
|
eend $?
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user