[c5c522c] | 1 | #!/bin/bash |
---|
| 2 | #Syn-3 Interface assign script. |
---|
| 3 | |
---|
| 4 | #path to configfile |
---|
| 5 | #<MAC>\t<INTERFACE> |
---|
| 6 | CONFIG_FILE=/mnt/if-assign.conf; |
---|
| 7 | |
---|
| 8 | |
---|
| 9 | #shut all interfaces down and move them out of the way |
---|
| 10 | for NET in /sys/class/net/eth*/address; do |
---|
| 11 | INTERFACE="`echo $NET|cut -f5 -d/`"; |
---|
| 12 | if [ "`cat /sys/class/net/$INTERFACE/type`" == "1" ]; then |
---|
| 13 | MAC="`cat $NET`"; |
---|
| 14 | ifconfig "$INTERFACE" down |
---|
| 15 | nameif "tmp_$INTERFACE" "$MAC" |
---|
| 16 | fi |
---|
| 17 | done |
---|
| 18 | |
---|
| 19 | #first, if we have a config, rename interfaces that have an explicit mac assignment |
---|
| 20 | if [ -e $CONFIG_FILE ]; then |
---|
| 21 | for NET in /sys/class/net/tmp_eth*/address; do |
---|
| 22 | INTERFACE="`echo $NET|cut -f5 -d/`"; |
---|
| 23 | if [ "`cat /sys/class/net/$INTERFACE/type`" == "1" ]; then |
---|
| 24 | MAC="`cat $NET`"; |
---|
| 25 | NEW_INTERFACE="`grep -i "^$MAC" $CONFIG_FILE |head -1|cut -f2`" 2>/dev/null |
---|
| 26 | if [ "$NEW_INTERFACE" ]; then |
---|
| 27 | echo "Assigning known adaptor $MAC to interface $NEW_INTERFACE." |
---|
| 28 | nameif "$NEW_INTERFACE" "$MAC" |
---|
| 29 | fi |
---|
| 30 | fi |
---|
| 31 | done |
---|
| 32 | fi |
---|
| 33 | |
---|
| 34 | #now rename the unknown adapters in ORDER of macadres. |
---|
| 35 | #this will guarantee consistency. in some complex setups, interfaces seem to be assigned at random/detection speed. |
---|
| 36 | #after booting this assignment will be stored permanently and can be changed by the user. |
---|
| 37 | IF_COUNTER=0 |
---|
| 38 | for MAC in `cat /sys/class/net/tmp_eth*/address 2>/dev/null|sort`; do |
---|
| 39 | NET=`grep -l $MAC /sys/class/net/tmp_eth*/address 2>/dev/null` |
---|
| 40 | INTERFACE="`echo $NET|cut -f5 -d/`"; |
---|
| 41 | |
---|
| 42 | #determine next available eth number |
---|
| 43 | while true; do |
---|
| 44 | NEW_INTERFACE=eth$IF_COUNTER |
---|
| 45 | if ! [ -e /sys/class/net/$NEW_INTERFACE ]; then |
---|
| 46 | echo "Assigning new adaptor $MAC to interface $NEW_INTERFACE" |
---|
| 47 | nameif "$NEW_INTERFACE" "$MAC" |
---|
| 48 | break; |
---|
| 49 | fi |
---|
| 50 | IF_COUNTER=$(( IF_COUNTER+1 )) |
---|
| 51 | done |
---|
| 52 | done |
---|