| #!/bin/sh |
| # executed by zcip |
| # parameters: $1 and environment |
| # $1 is: |
| # |
| # init: zcip starts. Environment: |
| # interface=eth0 |
| # |
| # config: Address is obtained. |
| # interface=eth0 |
| # ip=169.254.a.b |
| # |
| # deconfig: Conflict or link went down. |
| # interface=eth0 |
| |
| service=${PWD##*/} |
| file_ipconf="$service.ipconf" |
| dir_ipconf="/var/run/service/fw" |
| |
| exec >/dev/null |
| #exec >>"$0.out" #debug |
| exec 2>&1 |
| |
| echo "`date`: Params: $*" |
| |
| if test x"$1" != x"config"; then |
| # Reconfigure network with this interface disabled |
| echo "Deconfiguring" |
| rm "$file_ipconf" |
| rm "$dir_ipconf/$file_ipconf" |
| svc -u fw |
| exit |
| fi |
| |
| # "config": we've got the address |
| # Record information for e.g. dhcp_$IF_pinger service |
| env >"env.out" |
| |
| ./convert2ipconf "$file_ipconf" |
| # Reconfigure routing and firewall if needed |
| diff --brief "$file_ipconf" "$dir_ipconf/$file_ipconf" >/dev/null 2>&1 |
| if test $? != 0; then |
| echo "Reconfiguring fw" |
| mkdir -p "$dir_ipconf" 2>/dev/null |
| cp "$file_ipconf" "$dir_ipconf/$file_ipconf" |
| svc -u fw |
| fi |