summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorluwenpeng <[email protected]>2022-03-24 16:42:40 +0800
committerluwenpeng <[email protected]>2022-03-25 17:51:10 +0800
commit56dc8ebb5d4ca01e92a7485a0f83622d819f4f6b (patch)
treef63c3d76c093718f243acfec4ae558dda8f273ef
parent4a45654452d089f3fce284ee778ecae832e4c548 (diff)
onie-netcfg-set支持透传bond参数v2.0.4-20220325
-rwxr-xr-xmachine/geedge/TSG-X_NXR620G40_R01/rootconf/sysroot-init/networking.sh70
-rwxr-xr-xrootconf/default/bin/onie-netcfg-set194
2 files changed, 165 insertions, 99 deletions
diff --git a/machine/geedge/TSG-X_NXR620G40_R01/rootconf/sysroot-init/networking.sh b/machine/geedge/TSG-X_NXR620G40_R01/rootconf/sysroot-init/networking.sh
index f3a226eb..d0d732c7 100755
--- a/machine/geedge/TSG-X_NXR620G40_R01/rootconf/sysroot-init/networking.sh
+++ b/machine/geedge/TSG-X_NXR620G40_R01/rootconf/sysroot-init/networking.sh
@@ -19,43 +19,59 @@ platform_networking="/lib/onie/networking-platform"
[ -r "$platform_networking" ] && . "$platform_networking"
config_ethmgmt() {
- onie_env_array=$(cat /mnt/onie-boot/grub/grubenv | grep ONIE_NETWORK_ | grep -v "\#")
- onie_env_num=$(cat /mnt/onie-boot/grub/grubenv | grep ONIE_NETWORK_ | grep -v "\#" | wc -l)
+ base_option_array=$(cat /mnt/onie-boot/grub/grubenv | grep onie_network_option_ | grep -v "\#" | grep -v "onie_network_option_bond_")
+ bond_option_array=$(cat /mnt/onie-boot/grub/grubenv | grep onie_network_option_bond_ | grep -v "\#")
+ bonding_masters=$(cat /mnt/onie-boot/grub/grubenv | grep onie_network_option_bond_bonding_masters | grep -v "\#")
- if [ "$onie_env_num" == 0 ]; then
- log_info_msg "Please use onie-netcfg-set config ONIE network !!!"
- return 0
- fi
-
- for onie_env in $onie_env_array; do
- cmd_run export $onie_env
+ for base_args in $base_option_array; do
+ cmd_run export $base_args
done
- dump_env=$(env | grep ONIE_NETWORK | sort)
- log_console_msg "$dump_env"
+ env | sort
+
+ if [ -n "$bonding_masters" ]; then
+ bonding_masters_value=$(echo $bonding_masters | grep onie_network_option_bond_ | awk -F '=' '{print $2}')
+ cmd_run ifconfig $bonding_masters_value down
+
+ for bond_args in $bond_option_array; do
+
+ if [ "$bond_args" = "$bonding_masters" ]; then
+ continue
+ fi
- if [ -n "ONIE_NETWORK_BOND_SLAVES" ]; then
- cmd_run ifconfig bond0 down
- #cmd_run echo +bond0 >/sys/class/net/bonding_masters
- cmd_run echo active-backup >/sys/class/net/bond0/bonding/mode
- cmd_run echo 100 >/sys/class/net/bond0/bonding/miimon
+ option_name=$(echo $bond_args | grep onie_network_option_bond_ | awk -F '=' '{print $1}' | awk -F "onie_network_option_bond_" '{print $2}' | tr 'A-Z' 'a-z')
+ option_value=$(echo $bond_args | grep onie_network_option_bond_ | awk -F '=' '{print $2}')
- interface_array=$(echo $ONIE_NETWORK_BOND_SLAVES | tr ',' ' ')
- for eth in $interface_array; do
- cmd_run ifconfig $eth down
- cmd_run echo +$eth >/sys/class/net/bond0/bonding/slaves
- cmd_run ifconfig $eth up
+ echo "Bond Param: $option_name, $option_value"
+
+ if [ -n "$option_name" ] || [ -n "$option_value" ]; then
+
+ if [ "$option_name" = "active_slave" ] || [ "$option_name" = "slave" ]; then
+ eth=$(echo $option_value | tr '+' ' ')
+ cmd_run ifconfig $eth down
+ fi
+
+ cmd_run echo $option_value >/sys/class/net/bond0/bonding/$option_name
+ echo "echo $option_value >/sys/class/net/bond0/bonding/$option_name"
+ log_console_msg "echo $option_value >/sys/class/net/bond0/bonding/$option_name"
+
+ if [ "$option_name" = "active_slave" ] || [ "$option_name" = "slave" ]; then
+ eth=$(echo $option_value | tr '+' ' ')
+ cmd_run ifconfig $eth up
+ fi
+
+ fi
done
fi
- if [ -n "ONIE_NETWORK_INTERFACE" ] || [ -n "ONIE_NETWORK_ADDRESS" ] || [ -n "ONIE_NETWORK_MASK" ]; then
- cmd_run ifconfig $ONIE_NETWORK_INTERFACE $ONIE_NETWORK_ADDRESS netmask $ONIE_NETWORK_MASK up
- log_console_msg "$ONIE_NETWORK_INTERFACE: Using static IP config: ip=$ONIE_NETWORK_ADDRESS"
+ if [ -n "$onie_network_option_interface" ] && [ -n "$onie_network_option_address" ] && [ -n "$onie_network_option_netmask" ]; then
+ cmd_run ifconfig $onie_network_option_interface $onie_network_option_address netmask $onie_network_option_netmask up
+ log_console_msg "$onie_network_option_interface: Using static IP config: ip=$onie_network_option_address, netmask=$onie_network_option_netmask"
fi
- if [ -z "$ONIE_NETWORK_GATEWAY" ]; then
- cmd_run route add default gw $ONIE_NETWORK_GATEWAY
- log_console_msg "Add default gateway $ONIE_NETWORK_INTERFACE"
+ if [ -n "$onie_network_option_gateway" ]; then
+ cmd_run route add default gw $onie_network_option_gateway
+ log_console_msg "Add default gateway $onie_network_option_gateway"
fi
return 0
diff --git a/rootconf/default/bin/onie-netcfg-set b/rootconf/default/bin/onie-netcfg-set
index cf1f8749..dee3ebac 100755
--- a/rootconf/default/bin/onie-netcfg-set
+++ b/rootconf/default/bin/onie-netcfg-set
@@ -1,21 +1,42 @@
#!/bin/sh
-bond="bond"
-address="address"
-gateway="gateway"
-slaves="slaves"
+bond_support_params="bonding_masters active_slave ad_actor_sys_prio ad_actor_system ad_select ad_user_port_key all_slaves_active arp_interval arp_ip_target arp_validate arp_all_targets downdelay fail_over_mac lacp_rate max_bonds miimon min_links mode num_grat_arp num_unsol_na packets_per_slave peer_notif_delay primary primary_reselect tlb_dynamic_lb updelay use_carrier xmit_hash_policy resend_igmp lp_interval"
function usage() {
- echo "Usage: $(basename $0) $bond|$address|$gateway [VARIABLE]..."
+ echo "Usage: $(basename $0) [OPTION] [VARIABLE]..."
echo ""
cat <<EOF
Configuring the IPv4 Network of the ONIE Management Port.
-
- Example: onie-netcfg-set address eth0 192.168.100.10 255.255.255.0
+[Option]:
+ clear -- clear all config
+ clear \$option -- clear the option
+ interface \$value -- config interface
+ address \$value -- config address
+ netmask \$value -- config netmask
+ gateway \$value -- config gateway
+ bond \$param \$value -- config bond parameters
+ more bond parameters see
+ https://www.kernel.org/doc/Documentation/networking/bonding.txt
+
+ Example: onie-netcfg-set clear
+
+ onie-netcfg-set interface eth2
+ onie-netcfg-set address 192.168.100.100
+ onie-netcfg-set netmask 255.255.255.0
onie-netcfg-set gateway 192.168.100.1
- Example: onie-netcfg-set bond slaves eth0,eth1
- onie-netcfg-set address bond0 192.168.100.10 255.255.255.0
+ Example: onie-netcfg-set clear
+
+ onie-netcfg-set bond bonding_masters bond0
+ onie-netcfg-set bond slave +eth2
+ onie-netcfg-set bond slave +eth3
+ onie-netcfg-set bond mode active-backup
+ onie-netcfg-set bond miimon 100
+ ...
+
+ onie-netcfg-set interface bond0
+ onie-netcfg-set address 192.168.100.100
+ onie-netcfg-set netmask 255.255.255.0
onie-netcfg-set gateway 192.168.100.1
EOF
}
@@ -44,127 +65,156 @@ function check_interface() {
fi
}
-function check_bond_cmd_args() {
- sub_option=$2
- interface=$3
-
- if [ -z "$sub_option" ] || [ "$sub_option" != "$slaves" ] || [ -z "$interface" ] || [ -n "$4" ]; then
- echo "Invalid options args, Usage: onie-netcfg-set $bond $slaves interface1,interface2"
+function clear_config() {
+ if [ -n "$3" ]; then
+ echo "Invalid options args: $1 $2 $3"
return 1
fi
- interface_array=$(echo $interface | tr ',' ' ')
- interface_uniq_num=$(echo $interface_array | sed 's/ /\n/g' | sort | uniq | wc -l)
- interface_num=$(echo $interface_array | sed 's/ /\n/g' | sort | wc -l)
-
- if [ "$interface_num" -lt 2 ] || [ "$interface_uniq_num" != "$interface_num" ]; then
- echo "The bond slaves needs to configure multiple uniq interfaces"
- return 1
- fi
-
- for eth in $interface_array; do
- check_interface $eth
- ret=$?
- if [ "$ret" == 1 ]; then
- return 1
+ if [ -n "$2" ]; then
+ if [ -r /mnt/onie-boot/grub/grubenv ]; then
+ del_opt="/onie_network_option_$2/d"
+ sed -i "$del_opt" /mnt/onie-boot/grub/grubenv
fi
- done
-
- if [ -r /mnt/onie-boot/grub/grubenv ]; then
- sed -i "/ONIE_NETWORK_BOND_SLAVES/d" /mnt/onie-boot/grub/grubenv
else
- touch /mnt/onie-boot/grub/grubenv
+ if [ -r /mnt/onie-boot/grub/grubenv ]; then
+ sed -i "/onie_network_option_/d" /mnt/onie-boot/grub/grubenv
+ fi
fi
- echo "ONIE_NETWORK_BOND_SLAVES=$interface" >>/mnt/onie-boot/grub/grubenv
return 0
}
-function check_address_cmd_args() {
- interface=$2
- ip_address=$3
- netmask=$4
-
- if [ -z "$interface" ] || [ -z "$ip_address" ] || [ -z "$netmask" ] || [ -n "$5" ]; then
- echo "Invalid options args, Usage: onie-netcfg-set $1 \$interface \$address \$netmask"
+function config_interface() {
+ if [ -n "$3" ] || [ -z "$2" ]; then
+ echo "Invalid options args: $1 $2 $3"
return 1
fi
- check_interface $interface
+ check_interface $2
ret=$?
if [ "$ret" == 1 ]; then
return 1
fi
- check_ipv4_foramt $ip_address
- ret=$?
- if [ "$ret" == 1 ]; then
+ echo "onie_network_option_interface=$2" >>/mnt/onie-boot/grub/grubenv
+ return 0
+}
+
+function config_address() {
+ if [ -n "$3" ] || [ -z "$2" ]; then
+ echo "Invalid options args: $1 $2 $3"
return 1
fi
- check_ipv4_foramt $netmask
+ check_ipv4_foramt $2
ret=$?
if [ "$ret" == 1 ]; then
return 1
fi
- if [ -r /mnt/onie-boot/grub/grubenv ]; then
- sed -i "/ONIE_NETWORK_INTERFACE/d" /mnt/onie-boot/grub/grubenv
- sed -i "/ONIE_NETWORK_ADDRESS/d" /mnt/onie-boot/grub/grubenv
- sed -i "/ONIE_NETWORK_MASK/d" /mnt/onie-boot/grub/grubenv
- else
- touch /mnt/onie-boot/grub/grubenv
+ echo "onie_network_option_address=$2" >>/mnt/onie-boot/grub/grubenv
+ return 0
+}
+
+function config_netmask() {
+ if [ -n "$3" ] || [ -z "$2" ]; then
+ echo "Invalid options args: $1 $2 $3"
+ return 1
fi
- echo "ONIE_NETWORK_INTERFACE=$interface" >>/mnt/onie-boot/grub/grubenv
- echo "ONIE_NETWORK_ADDRESS=$ip_address" >>/mnt/onie-boot/grub/grubenv
- echo "ONIE_NETWORK_MASK=$netmask" >>/mnt/onie-boot/grub/grubenv
+ check_ipv4_foramt $2
+ ret=$?
+ if [ "$ret" == 1 ]; then
+ return 1
+ fi
+ echo "onie_network_option_netmask=$2" >>/mnt/onie-boot/grub/grubenv
+ return 0
}
-function check_gateway_cmd_args() {
- gateway=$2
-
- if [ -z "$gateway" ] || [ -n "$3" ]; then
- echo "Invalid options args, Usage: onie-netcfg-set $1 \$gateway"
+function config_gateway() {
+ if [ -n "$3" ] || [ -z "$2" ]; then
+ echo "Invalid options args: $1 $2 $3"
return 1
fi
- check_ipv4_foramt $gateway
+ check_ipv4_foramt $2
ret=$?
if [ "$ret" == 1 ]; then
return 1
fi
- if [ -r /mnt/onie-boot/grub/grubenv ]; then
- sed -i "/ONIE_NETWORK_GATEWAY/d" /mnt/onie-boot/grub/grubenv
- else
- touch /mnt/onie-boot/grub/grubenv
+ echo "onie_network_option_gateway=$2" >>/mnt/onie-boot/grub/grubenv
+ return 0
+}
+
+function config_bond() {
+ if [ -n "$4" ] || [ -z "$2" ] || [ -z "$3" ]; then
+ echo "Invalid options args: $1 $2 $3 $4"
+ return 1
fi
- echo "ONIE_NETWORK_GATEWAY=$gateway" >>/mnt/onie-boot/grub/grubenv
+ # bond_param_is_invalid=0
+ # for param in $bond_support_params; do
+ # if [ "$param" = "$2" ]; then
+ # bond_param_is_invalid=1
+ # fi
+ # done
+ # if [ "$bond_param_is_invalid" == 0 ]; then
+ # echo "Invalid bond option args: $2"
+ # return 1
+ # fi
+
+ echo "onie_network_option_bond_$2=$3" >>/mnt/onie-boot/grub/grubenv
+ return 0
}
+clear="clear"
+interface="interface"
+address="address"
+netmask="netmask"
+gateway="gateway"
+bond="bond"
+
option=$1
-if [ "$option" = "$bond" ]; then
- check_bond_cmd_args $1 $2 $3 $4
+if [ "$option" = "$clear" ]; then
+ clear_config $1 $2 $3
+ ret=$?
+ if [ "$ret" == 1 ]; then
+ exit 1
+ fi
+elif [ "$option" = "$interface" ]; then
+ config_interface $1 $2 $3
ret=$?
if [ "$ret" == 1 ]; then
exit 1
fi
elif [ "$option" = "$address" ]; then
- check_address_cmd_args $1 $2 $3 $4 $5
+ config_address $1 $2 $3
+ ret=$?
+ if [ "$ret" == 1 ]; then
+ exit 1
+ fi
+elif [ "$option" = "$netmask" ]; then
+ config_netmask $1 $2 $3
ret=$?
if [ "$ret" == 1 ]; then
exit 1
fi
elif [ "$option" = "$gateway" ]; then
- check_gateway_cmd_args $1 $2 $3
+ config_gateway $1 $2 $3
+ ret=$?
+ if [ "$ret" == 1 ]; then
+ exit 1
+ fi
+elif [ "$option" = "$bond" ]; then
+ config_bond $1 $2 $3 $4
ret=$?
if [ "$ret" == 1 ]; then
exit 1
fi
else
usage
-fi \ No newline at end of file
+fi