Skip to content
Snippets Groups Projects
Commit e0d7cb9c authored by Sukru Senli's avatar Sukru Senli
Browse files

allocate new macaddr for vlan interface if it is in dhcp bridge

parent 5b22a2dc
Branches
Tags
No related merge requests found
...@@ -78,8 +78,33 @@ addbrcmvlan () ...@@ -78,8 +78,33 @@ addbrcmvlan ()
if [ "$ret" -eq 0 ]; then if [ "$ret" -eq 0 ]; then
ifconfig $baseifname up ifconfig $baseifname up
echo "vlanctl --if-create $ifname" > /dev/console echo "vlanctl --if-create $ifname" > /dev/console
if [ "$bridge" -eq 1 ]; then
local unmanaged=0
local nets net typ proto
nets=$(get_network_of "$ifname")
for net in $nets; do
typ=$(uci -q get network."$net".type)
proto=$(uci -q get network."$net".proto)
proto="${proto:-none}"
if [ "$typ" == "bridge" -a "$proto" == "none" ]; then
unmanaged=1
break
fi
done
echo '1' > /proc/sys/net/ipv6/conf/$baseifname/disable_ipv6
ifconfig $baseifname up
if [ "x$bridge" = "x" ]; then
bridge=0
fi
if [ "$bridge" -eq 1 -a "$unmanaged" == "1" ]; then
vlanctl --if-create $baseifname $vlan8021q vlanctl --if-create $baseifname $vlan8021q
else
vlanctl --routed --if-create $baseifname $vlan8021q
fi
if [ "$bridge" -eq 1 ]; then
vlanctl --if $baseifname --set-if-mode-rg vlanctl --if $baseifname --set-if-mode-rg
vlanctl --if $baseifname --tx --tags 0 --default-miss-drop vlanctl --if $baseifname --tx --tags 0 --default-miss-drop
vlanctl --if $baseifname --tx --tags 1 --default-miss-drop vlanctl --if $baseifname --tx --tags 1 --default-miss-drop
...@@ -95,7 +120,6 @@ addbrcmvlan () ...@@ -95,7 +120,6 @@ addbrcmvlan ()
# tags 2 rx # tags 2 rx
vlanctl --if $baseifname --rx --tags 2 --filter-vid $vlan8021q 0 --pop-tag --set-rxif $ifname --rule-insert-before -1 vlanctl --if $baseifname --rx --tags 2 --filter-vid $vlan8021q 0 --pop-tag --set-rxif $ifname --rule-insert-before -1
else else
vlanctl --routed --if-create $baseifname $vlan8021q
vlanctl --if $baseifname --set-if-mode-rg vlanctl --if $baseifname --set-if-mode-rg
vlanctl --if $baseifname --tx --tags 0 --default-miss-drop vlanctl --if $baseifname --tx --tags 0 --default-miss-drop
vlanctl --if $baseifname --tx --tags 1 --default-miss-drop vlanctl --if $baseifname --tx --tags 1 --default-miss-drop
...@@ -125,19 +149,34 @@ brcm_virtual_interface_rules () ...@@ -125,19 +149,34 @@ brcm_virtual_interface_rules ()
local baseifname=$1 local baseifname=$1
local ifname=$2 local ifname=$2
local bridge=$3 local bridge=$3
local unmanaged=0
local nets net typ proto
nets=$(get_network_of "$ifname")
for net in $nets; do
typ=$(uci -q get network."$net".type)
proto=$(uci -q get network."$net".proto)
proto="${proto:-none}"
if [ "$typ" == "bridge" -a "$proto" == "none" ]; then
unmanaged=1
break
fi
done
echo '1' > /proc/sys/net/ipv6/conf/$baseifname/disable_ipv6 echo '1' > /proc/sys/net/ipv6/conf/$baseifname/disable_ipv6
ifconfig $baseifname up ifconfig $baseifname up
if [ "x$bridge" = "x" ]; then if [ "x$bridge" = "x" ]; then
bridge=0 bridge=0
fi fi
if [ "$bridge" -eq 1 ]; then if [ "$bridge" -eq 1 -a "$unmanaged" == "1" ]; then
vlanctl --if-create-name $baseifname $ifname vlanctl --if-create-name $baseifname $ifname
create_ebtables_bridge_rules
else else
vlanctl --routed --if-create-name $baseifname $ifname vlanctl --routed --if-create-name $baseifname $ifname
fi fi
[ "$bridge" -eq 1 ] && create_ebtables_bridge_rules
#set default RG mode #set default RG mode
vlanctl --if $baseifname --set-if-mode-rg vlanctl --if $baseifname --set-if-mode-rg
#Set Default Droprules #Set Default Droprules
...@@ -145,9 +184,8 @@ brcm_virtual_interface_rules () ...@@ -145,9 +184,8 @@ brcm_virtual_interface_rules ()
vlanctl --if $baseifname --tx --tags 1 --default-miss-drop vlanctl --if $baseifname --tx --tags 1 --default-miss-drop
vlanctl --if $baseifname --tx --tags 2 --default-miss-drop vlanctl --if $baseifname --tx --tags 2 --default-miss-drop
vlanctl --if $baseifname --tx --tags 0 --filter-txif $ifname --rule-insert-before -1 vlanctl --if $baseifname --tx --tags 0 --filter-txif $ifname --rule-insert-before -1
if [ "$bridge" -eq 1 ]; then if [ "$bridge" -eq 1 ]; then
# tags 1 tx # tags 1 tx
vlanctl --if $baseifname --tx --tags 1 --filter-txif $ifname --rule-insert-before -1 vlanctl --if $baseifname --tx --tags 1 --filter-txif $ifname --rule-insert-before -1
# tags 2 tx # tags 2 tx
...@@ -159,7 +197,6 @@ brcm_virtual_interface_rules () ...@@ -159,7 +197,6 @@ brcm_virtual_interface_rules ()
# tags 2 rx # tags 2 rx
vlanctl --if $baseifname --rx --tags 2 --set-rxif $ifname --rule-insert-last vlanctl --if $baseifname --rx --tags 2 --set-rxif $ifname --rule-insert-last
else else
# tags 1 rx # tags 1 rx
vlanctl --if $baseifname --rx --tags 1 --set-rxif $ifname --filter-vlan-dev-mac-addr 0 --drop-frame --rule-insert-before -1 vlanctl --if $baseifname --rx --tags 1 --set-rxif $ifname --filter-vlan-dev-mac-addr 0 --drop-frame --rule-insert-before -1
# tags 2 rx # tags 2 rx
...@@ -167,9 +204,8 @@ brcm_virtual_interface_rules () ...@@ -167,9 +204,8 @@ brcm_virtual_interface_rules ()
# tags 0 rx # tags 0 rx
vlanctl --if $baseifname --rx --tags 0 --set-rxif $ifname --filter-vlan-dev-mac-addr 1 --rule-insert-before -1 vlanctl --if $baseifname --rx --tags 0 --set-rxif $ifname --filter-vlan-dev-mac-addr 1 --rule-insert-before -1
fi fi
ifconfig $ifname up ifconfig $ifname up
ifconfig $ifname multicast ifconfig $ifname multicast
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment