Annotation of elwix/config/etc/uboot/rc.d/009.aggr_dev.stop, revision 1.2
1.2 ! misho 1: #!/bin/sh
! 2: #
! 3: # (C)`13 ELWIX network aggregation device appliance
! 4: # by Michael Pounov <misho@elwix.org>
! 5: #
! 6: # $Id: 009.aggr_dev.stop,v 1.1.2.1 2014/01/23 09:34:54 misho Exp $
! 7:
! 8: IFACES=""
! 9: LANPORT=""
! 10: BRIDGE=""
! 11: LAGG=""
! 12: LAGGPORTS=""
! 13:
! 14: CLEANUP_FILE="/tmp/cleanup.agg"
! 15:
! 16: select_eth()
! 17: {
! 18: local RETIF=""
! 19:
! 20: IFACES=$(ifconfig -l)
! 21:
! 22: for i in $IFACES; do
! 23: ISETH=$(ifconfig $i | grep "ether")
! 24: ISVLAN=$(ifconfig $i | grep "vlan")
! 25: if [ -n "$ISETH" -a -z "$ISVLAN" ]; then
! 26: RETIF="$RETIF $i"
! 27: fi
! 28: done
! 29:
! 30: IFACES=$RETIF
! 31: }
! 32:
! 33: cleanup()
! 34: {
! 35: echo ">> Emergency destroy clones ..."
! 36: ifconfig $BRIDGE destroy >/dev/null 2>&1
! 37: ifconfig $LAGG destroy >/dev/null 2>&1
! 38: rm -f $CLEANUP_FILE
! 39: }
! 40:
! 41: up_lan()
! 42: {
! 43: echo "+ Up lan port $1"
! 44: if ! `ifconfig $1 description "LAN port" up`; then
! 45: exit 1
! 46: else
! 47: LANPORT=$1
! 48: fi
! 49: }
! 50:
! 51: up_others()
! 52: {
! 53: if [ $# -lt 2 ]; then
! 54: echo "Error:: Not enough ethernet interfaces for aggregation!"
! 55: exit 2
! 56: else
! 57: shift
! 58: LAGGPORTS=$*
! 59: fi
! 60:
! 61: for i in $LAGGPORTS; do
! 62: echo "+ Up aggregation port $i"
! 63: if ! `ifconfig $i description "Aggregation port" up`; then
! 64: exit 2
! 65: fi
! 66: done
! 67: }
! 68:
! 69: bring_clones()
! 70: {
! 71: rm -f $CLEANUP_FILE
! 72:
! 73: BRIDGE=$(ifconfig bridge create up)
! 74: if [ -z "$BRIDGE" ]; then
! 75: exit 3
! 76: else
! 77: echo "+ Create link-bridge interface $BRIDGE"
! 78: echo $BRIDGE >>/tmp/cleanup.agg
! 79: fi
! 80:
! 81: LAGG=$(ifconfig lagg create laggproto roundrobin up)
! 82: if [ -z "$LAGG" ]; then
! 83: ifconfig $BRIDGE destroy >/dev/null 2>&1
! 84: rm -f $CLEANUP_FILE
! 85: exit 3
! 86: else
! 87: echo "+ Create link-aggregation interface $LAGG"
! 88: echo $LAGG >>/tmp/cleanup.agg
! 89: fi
! 90: }
! 91:
! 92: join2lagg()
! 93: {
! 94: echo "+ Join to aggregation interface $LAGG ports $LAGGPORTS"
! 95:
! 96: for i in $LAGGPORTS; do
! 97: if ! `ifconfig $LAGG laggport $i`; then
! 98: cleanup
! 99: exit 4
! 100: fi
! 101: done
! 102: }
! 103:
! 104: join2bridge()
! 105: {
! 106: echo "+ Join to bridge interface $BRIDGE ports $LANPORT $LAGG"
! 107:
! 108: if ! `ifconfig $BRIDGE addm $LANPORT addm $LAGG`; then
! 109: cleanup
! 110: exit 5
! 111: fi
! 112: }
! 113:
! 114: # main()
! 115: if [ -n "$1" ]; then
! 116: echo ">> Cleanup cloned interfaces ..."
! 117:
! 118: if [ -r $CLEANUP_FILE ]; then
! 119: while read line; do
! 120: if ! `ifconfig $line >/dev/null 2>&1`; then
! 121: break
! 122: else
! 123: ifconfig $line destroy >/dev/null 2>&1
! 124: fi
! 125: done <$CLEANUP_FILE
! 126:
! 127: rm -f $CLEANUP_FILE
! 128: fi
! 129: else
! 130: echo ">> Setup aggregation device ..."
! 131: select_eth
! 132:
! 133: up_lan $IFACES
! 134: up_others $IFACES
! 135:
! 136: bring_clones
! 137: join2lagg
! 138: join2bridge
! 139: fi
! 140:
! 141: echo ">> Done."
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>