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