[oe] [meta-networking][PATCH:V2] vlan: Add vlan recipe
Joe MacDonald
Joe.MacDonald at windriver.com
Wed Jun 19 14:35:11 UTC 2013
Hey Lei,
[[oe] [meta-networking][PATCH:V2] vlan: Add vlan recipe] On 13.06.18 (Tue 10:23) lei.yang at windriver.com wrote:
> From: Lei Yang <lei.yang at windriver.com>
>
> A 802.1q vlan support program,which can be used by virt-test
>
> Signed-off-by: Lei Yang <lei.yang at windriver.com>
> ---
> meta-networking/recipes-support/vlan/files/ip | 21 +++++++
> .../recipes-support/vlan/files/vlan-post-down | 28 +++++++++
> .../recipes-support/vlan/files/vlan-pre-up | 61 ++++++++++++++++++++
> meta-networking/recipes-support/vlan/vlan_1.9.bb | 36 ++++++++++++
> 4 files changed, 146 insertions(+), 0 deletions(-)
> create mode 100755 meta-networking/recipes-support/vlan/files/ip
> create mode 100755 meta-networking/recipes-support/vlan/files/vlan-post-down
> create mode 100755 meta-networking/recipes-support/vlan/files/vlan-pre-up
> create mode 100755 meta-networking/recipes-support/vlan/vlan_1.9.bb
>
> diff --git a/meta-networking/recipes-support/vlan/files/ip b/meta-networking/recipes-support/vlan/files/ip
> new file mode 100755
> index 0000000..d7de05c
> --- /dev/null
> +++ b/meta-networking/recipes-support/vlan/files/ip
> @@ -0,0 +1,21 @@
> +#!/bin/sh
> +# This should probably go into ifupdown
> +# But usually only those with lots of interfaces (vlans) need these
> +if [ -d "/proc/sys/net/ipv4/conf/$IFACE" ]
> +then
> + if [ -n "$IF_IP_PROXY_ARP" ]; then
> + if [ "$IF_IP_PROXY_ARP" -eq "1" ]; then
> + echo 1 > "/proc/sys/net/ipv4/conf/$IFACE/proxy_arp"
> + else
> + echo 0 > "/proc/sys/net/ipv4/conf/$IFACE/proxy_arp"
> + fi
> + fi
> + if [ -n "$IF_IP_RP_FILTER" ]; then
> + if [ "$IF_IP_RP_FILTER" -eq "0" ]; then
> + echo 0 > "/proc/sys/net/ipv4/conf/$IFACE/rp_filter"
> + else
> + echo 1 > "/proc/sys/net/ipv4/conf/$IFACE/rp_filter"
> + fi
> + fi
> +fi
> +
Sorry, I should've caught this in the v1, but what's up with this file?
Did you get it out of the vlan package? It's decently isolated with the
do_install in the recipe, but it's an exact namespace configuration for
a binary from iproute2 and it doesn't appear to do even close to the
same thing. Can you expand on where it's from and whether it's
practical to give it a less opaque name? I'm mainly asking because I
can't convince myself I know which 'ip' you are relying upon (or
getting, actually, I think I know which one you're getting...) in
vlan-pre-up.
> diff --git a/meta-networking/recipes-support/vlan/files/vlan-post-down b/meta-networking/recipes-support/vlan/files/vlan-post-down
> new file mode 100755
> index 0000000..89b16fb
> --- /dev/null
> +++ b/meta-networking/recipes-support/vlan/files/vlan-post-down
> @@ -0,0 +1,28 @@
> +#!/bin/sh
> +
> +# If IFACE is an automagic vlan interface (without the vlan-raw-device
> +# parameter) then let's try to discover the magic here.. Another way would be
> +# to just probe for the right device name in /proc/net/vlan
> +
> +case "$IFACE" in
> + # Ignore any alias (#272891)
> + *:*)
> + exit 0
> + ;;
> + eth*.0*|bond*.0*|wlan*.0*)
> + IF_VLAN_RAW_DEVICE=`echo $IFACE|sed "s/\(eth[0-9][0-9]*\)\..*/\1/;s/\(bond[0-9][0-9]*\)\..*/\1/;s/\(wlan[0-9][0-9]*\)\..*/\1/"`
> + ;;
> + eth*.*|bond*.*|wlan*.*)
> + IF_VLAN_RAW_DEVICE=`echo $IFACE|sed "s/\(eth[0-9][0-9]*\)\..*/\1/;s/\(bond[0-9][0-9]*\)\..*/\1/;s/\(wlan[0-9][0-9]*\)\..*/\1/"`
> + ;;
> + # Test for vlan raw device (#196890, #292648)
> + *)
> + [ -z "$IF_VLAN_RAW_DEVICE" ] && exit 0
> + ;;
> +esac
> +
> +if [ ! -x /sbin/vconfig ]; then
> + exit 0
> +fi
> +
> +vconfig rem $IFACE
> diff --git a/meta-networking/recipes-support/vlan/files/vlan-pre-up b/meta-networking/recipes-support/vlan/files/vlan-pre-up
> new file mode 100755
> index 0000000..b977be8
> --- /dev/null
> +++ b/meta-networking/recipes-support/vlan/files/vlan-pre-up
> @@ -0,0 +1,61 @@
> +#!/bin/sh
> +
> +# Most of this stuff is to enable vlans
> +
> +case "$IFACE" in
> + # Ignore any alias (#272891) which uses <interface>:<alabel>
> + *:*)
> + exit 0
> + ;;
> + vlan0*)
> + vconfig set_name_type VLAN_PLUS_VID
> + VLANID=`echo $IFACE|sed "s/vlan0*//"`
> + ;;
> + vlan*)
> + vconfig set_name_type VLAN_PLUS_VID_NO_PAD
> + VLANID=`echo $IFACE|sed "s/vlan0*//"`
> + ;;
> + eth*.0*|bond*.0*|wlan*.0*)
> + vconfig set_name_type DEV_PLUS_VID
> + VLANID=`echo $IFACE|sed "s/eth[0-9][0-9]*\.0*//g;s/bond[0-9][0-9]*\.0*//;s/wlan[0-9][0-9]*\.0*//"`
> + IF_VLAN_RAW_DEVICE=`echo $IFACE|sed "s/\(eth[0-9][0-9]*\)\..*/\1/;s/\(bond[0-9][0-9]*\)\..*/\1/;s/\(wlan[0-9][0-9]*\)\..*/\1/"`
> + ;;
> + eth*.*|bond*.*|wlan*.*)
> + vconfig set_name_type DEV_PLUS_VID_NO_PAD
> + VLANID=`echo $IFACE|sed "s/eth[0-9][0-9]*\.0*//g;s/bond[0-9][0-9]*\.0*//g;s/wlan[0-9][0-9]*\.0*//g"`
> + IF_VLAN_RAW_DEVICE=`echo $IFACE|sed "s/\(eth[0-9][0-9]*\)\..*/\1/;s/\(bond[0-9][0-9]*\)\..*/\1/;s/\(wlan[0-9][0-9]*\)\..*/\1/"`
> + ;;
> + *.0*)
> + # Silently ignore interfaces which we do not (know how to) support
> + [ -z "$IF_VLAN_RAW_DEVICE" ] && exit 0
> + vconfig set_name_type DEV_PLUS_VID
> + VLANID=`echo $IFACE|sed "s/[^.]*\.0*//g"`
> + ;;
> + *.*)
> + # Silently ignore interfaces which we do not (know how to) support
> + [ -z "$IF_VLAN_RAW_DEVICE" ] && exit 0
> + vconfig set_name_type DEV_PLUS_VID_NO_PAD
> + VLANID=`echo $IFACE|sed "s/[^.]*\.0*//g"`
> + ;;
> +
> + *)
> + exit 0
> + ;;
> +esac
> +
> +if [ -n "$IF_VLAN_RAW_DEVICE" ]; then
> + if [ ! -x /sbin/vconfig ]; then
> + exit 0
> + fi
> + if ! ip link show dev "$IF_VLAN_RAW_DEVICE" > /dev/null; then
> + echo "$IF_VLAN_RAW_DEVICE does not exist, unable to create $IFACE"
> + exit 1
> + fi
> + ip link set up dev $IF_VLAN_RAW_DEVICE
> + vconfig add $IF_VLAN_RAW_DEVICE $VLANID
> +fi
> +
> +# This is not vlan specific, and should actually go somewhere else.
> +if [ -n "$IF_HW_MAC_ADDRESS" ]; then
> + ip link set $IFACE address $IF_HW_MAC_ADDRESS
> +fi
> diff --git a/meta-networking/recipes-support/vlan/vlan_1.9.bb b/meta-networking/recipes-support/vlan/vlan_1.9.bb
> new file mode 100755
> index 0000000..b79da6e
> --- /dev/null
> +++ b/meta-networking/recipes-support/vlan/vlan_1.9.bb
> @@ -0,0 +1,36 @@
> +SUMMARY = "802.1q vlan support program"
> +HOMEPAGE = "http://www.candelatech.com/~greear/vlan.html"
> +LICENSE = "GPLv2"
> +SECTION = "console/network"
> +
> +SRC_URI[md5sum] = "5f0c6060b33956fb16e11a15467dd394"
> +SRC_URI[sha256sum] = "3b8f0a1bf0d3642764e5f646e1f3bbc8b1eeec474a77392d9aeb4868842b4cca"
> +LIC_FILES_CHKSUM = "file://macvlan_config.c;beginline=4;endline=62;md5=dc0660d77e4313e8ccdf256fbe436a63"
> +
> +S = "${WORKDIR}/${PN}"
> +
> +SRC_URI = " \
> + http://www.candelatech.com/~greear/vlan/vlan.${PV}.tar.gz \
> + file://ip \
> + file://vlan-pre-up \
> + file://vlan-post-down \
> + "
I think Paul had meant to put SRC_URI[...] around here in his request to
v1.
-J.
> +
> +CCFLAGS = "-g -D_GNU_SOURCE -Wall -I${STAGING_INCDIR}"
> +LDLIBS = ""
> +
> +do_compile() {
> + ${CC} ${CCFLAGS} -c vconfig.c
> + ${CC} ${CCFLAGS} ${LDFLAGS} -o vconfig vconfig.o ${LDLIBS}
> +}
> +
> +do_install() {
> + install -d "${D}${sbindir}"
> + install -m 755 "${S}/vconfig" "${D}${sbindir}/vconfig"
> + install -d ${D}/${sysconfdir}/network/if-pre-up.d
> + install -d ${D}/${sysconfdir}/network/if-post-down.d
> + install -d ${D}/${sysconfdir}/network/if-up.d
> + install -m 0755 ${WORKDIR}/ip ${D}/${sysconfdir}/network/if-up.d/
> + install -m 0755 ${WORKDIR}/vlan-pre-up ${D}/${sysconfdir}/network/if-pre-up.d/vlan
> + install -m 0755 ${WORKDIR}/vlan-post-down ${D}/${sysconfdir}/network/if-post-down.d/vlan
> +}
--
-Joe MacDonald.
:wq
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20130619/0ddbd8b2/attachment-0002.sig>
More information about the Openembedded-devel
mailing list