[pve-devel] [PATCH] add vlan aware bridge ifupdown script
Alexandre DERUMIER
aderumier at odiso.com
Fri Jul 24 14:10:27 CEST 2015
>>On the vmbr interfaces we separate vlans with a 'v' (ie vmbr0v5 would
>>be vmbr0's vlan 5), or is a change to dotted notation required for this?
>>We use the dots only on physical interfaces.
It's not a new bridge, it's a self tagged interface inside the bridge.
>> + VLANID=`echo $IFACE|sed "s/vmbr[0-9][0-9]*\.0*//g"`
>>>Why the /0*/?
>>Btw. sed without -r does have a 1-or-more match, too, you just have to
>>escape it: /[0-9]\+/. (Though I very much recommend using the -r switch
>>for simplicity (and because regex(7) calls basic ones "obsolete" ;-) )).
>>(And an ^ at the beginning might be good here?)
>>
>>Personally I'd recommend bash over dash since it supports REs and more
>>substitutions without having to fork out to an echo+sed pipe.
>>
>> + IF_VLAN_RAW_DEVICE=`echo $IFACE|sed "s/\(vmbr[0-9][0-9]*\)\..*/\1/"`
>>Maybe ${IFACE%%.*} is sufficient here? (both dash and bash compatible)
I have simply copy/paste current code from /etc/network/if-pre-up.d/vlan
So, it should work with bash and dash ?
----- Mail original -----
De: "Wolfgang Bumiller" <w.bumiller at proxmox.com>
À: "aderumier" <aderumier at odiso.com>
Cc: "pve-devel" <pve-devel at pve.proxmox.com>
Envoyé: Vendredi 24 Juillet 2015 12:12:39
Objet: Re: [pve-devel] [PATCH] add vlan aware bridge ifupdown script
A couple of questions:
> + vmbr*.*)
On the vmbr interfaces we separate vlans with a 'v' (ie vmbr0v5 would
be vmbr0's vlan 5), or is a change to dotted notation required for this?
We use the dots only on physical interfaces.
> + VLANID=`echo $IFACE|sed "s/vmbr[0-9][0-9]*\.0*//g"`
Why the /0*/?
Btw. sed without -r does have a 1-or-more match, too, you just have to
escape it: /[0-9]\+/. (Though I very much recommend using the -r switch
for simplicity (and because regex(7) calls basic ones "obsolete" ;-) )).
(And an ^ at the beginning might be good here?)
Personally I'd recommend bash over dash since it supports REs and more
substitutions without having to fork out to an echo+sed pipe.
> + IF_VLAN_RAW_DEVICE=`echo $IFACE|sed "s/\(vmbr[0-9][0-9]*\)\..*/\1/"`
Maybe ${IFACE%%.*} is sufficient here? (both dash and bash compatible)
On Fri, Jul 24, 2015 at 11:24:44AM +0200, Alexandre Derumier wrote:
> This add support to enable vlan aware bridge,
> and management interfaces
>
> example: 1 bridge and 1 administration port on vlan 100
>
> auto vmbr0
> iface vmbr0 inet manual
> bridge_ports eth0
> bridge_stp off
> bridge_fd 0
> bridge_vlan_aware yes
> bridge_vids 10-15
>
> auto vmbr0.100
> iface vmbr0.100 inet static
> address X.X.X.X
> netmask 255.255.255.0
> gateway X.X.X.X
>
> bridge_vids is optional, and allow on the specified vlans.(current take 1 value or range, need to be improve with list)
> If not specified, the allowed vlan are 2-4094.
> vlan 1 is the default pvid. (all untagged traffic is going to this vlan).
>
> Signed-off-by: Alexandre Derumier <aderumier at odiso.com>
> ---
> Makefile | 4 +++-
> debian/conffiles | 2 ++
> vmbrvlan | 38 ++++++++++++++++++++++++++++++++++++++
> 3 files changed, 43 insertions(+), 1 deletion(-)
> create mode 100755 vmbrvlan
>
> diff --git a/Makefile b/Makefile
> index a09393c..6100f05 100644
> --- a/Makefile
> +++ b/Makefile
> @@ -80,7 +80,7 @@ aplupload:
> scp aplinfo/aplinfo.dat aplinfo.dat.gz aplinfo/aplinfo.dat.asc download1.proxmox.com:/home/ftp/appliances/
>
> .PHONY: install
> -install: country.dat vznet.conf vzdump.conf vzdump-hook-script.pl pve-apt.conf pve-repo-ca-certificates.crt mtu
> +install: country.dat vznet.conf vzdump.conf vzdump-hook-script.pl pve-apt.conf pve-repo-ca-certificates.crt mtu bridgevlan vmbrvlan
> install -d -m 0700 -o www-data -g www-data ${DESTDIR}/var/log/pveproxy
> install -D -m 0644 debian/pve.logrotate ${DESTDIR}/etc/logrotate.d/pve
> install -d ${DESTDIR}/usr/share/${PACKAGE}
> @@ -97,6 +97,8 @@ install: country.dat vznet.conf vzdump.conf vzdump-hook-script.pl pve-apt.conf p
> install -D -m 0644 vzdump.conf ${DESTDIR}/etc/vzdump.conf
> install -D -m 0755 vznet.conf ${DESTDIR}/etc/vz/vznet.conf
> install -D -m 0755 mtu ${DESTDIR}/etc/network/if-up.d/mtu
> + install -D -m 0755 bridgevlan ${DESTDIR}/etc/network/if-up.d/bridgevlan
> + install -D -m 0755 vmbrvlan ${DESTDIR}/etc/network/if-pre-up.d/vmbrvlan
> install -m 0644 vzdump-hook-script.pl ${DOCDIR}/examples/vzdump-hook-script.pl
> install -m 0644 spice-example-sh ${DOCDIR}/examples/spice-example-sh
> install -m 0644 copyright ${DOCDIR}
> diff --git a/debian/conffiles b/debian/conffiles
> index 895abdf..2916cac 100644
> --- a/debian/conffiles
> +++ b/debian/conffiles
> @@ -11,3 +11,5 @@
> /etc/apt/pve-repo-ca-certificates.crt
> /etc/apt/sources.list.d/pve-enterprise.list
> /etc/network/if-up.d/mtu
> +/etc/network/if-up.d/bridgevlan
> +/etc/network/if-pre-up.d/vmbrvlan
> diff --git a/vmbrvlan b/vmbrvlan
> new file mode 100755
> index 0000000..ee570f0
> --- /dev/null
> +++ b/vmbrvlan
> @@ -0,0 +1,38 @@
> +#!/bin/sh
> +
> +# Most of this stuff is to enable vlans
> +
> +case "$IFACE" in
> + # Ignore any alias (#272891) which uses <interface>:<alabel>
> + *:*)
> + exit 0
> + ;;
> + vmbr*.*)
> + vconfig set_name_type DEV_PLUS_VID_NO_PAD
> + VLANID=`echo $IFACE|sed "s/vmbr[0-9][0-9]*\.0*//g"`
> + IF_VLAN_RAW_DEVICE=`echo $IFACE|sed "s/\(vmbr[0-9][0-9]*\)\..*/\1/"`
> + bridge vlan add dev $IF_VLAN_RAW_DEVICE vid $VLANID self
> + ;;
> + *)
> + 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
> + if [ ! -e "/sys/class/net/$IFACE" ]; then
> + ip link set up dev $IF_VLAN_RAW_DEVICE
> + vconfig add $IF_VLAN_RAW_DEVICE $VLANID
> + fi
> +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
> --
> 2.1.4
>
> _______________________________________________
> pve-devel mailing list
> pve-devel at pve.proxmox.com
> http://pve.proxmox.com/cgi-bin/mailman/listinfo/pve-devel
>
More information about the pve-devel
mailing list