diff options
author | James <> | 2013-03-17 12:16:37 +0000 |
---|---|---|
committer | James <> | 2013-03-17 12:16:37 +0000 |
commit | 27b76ab0671089c47506615a796a261e993896a7 (patch) | |
tree | 61213d67e7fa87b20356b23798558e2c4212c42f /package/network/ipv6/odhcp6c/files/.svn/text-base/dhcpv6.script.svn-base | |
download | trunk-36060-master.tar.gz trunk-36060-master.tar.bz2 trunk-36060-master.zip |
Diffstat (limited to 'package/network/ipv6/odhcp6c/files/.svn/text-base/dhcpv6.script.svn-base')
-rw-r--r-- | package/network/ipv6/odhcp6c/files/.svn/text-base/dhcpv6.script.svn-base | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/package/network/ipv6/odhcp6c/files/.svn/text-base/dhcpv6.script.svn-base b/package/network/ipv6/odhcp6c/files/.svn/text-base/dhcpv6.script.svn-base new file mode 100644 index 0000000..56f8c39 --- /dev/null +++ b/package/network/ipv6/odhcp6c/files/.svn/text-base/dhcpv6.script.svn-base @@ -0,0 +1,92 @@ +#!/bin/sh +[ -z "$2" ] && echo "Error: should be run by odhcpc6c" && exit 1 +. /lib/functions.sh +. /lib/netifd/netifd-proto.sh + +setup_interface () { + local device="$1" + proto_init_update "*" 1 + + # Merge RA-DNS + for radns in $RA_DNS; do + local duplicate=0 + for dns in $RDNSS; do + [ "$radns" = "$dns" ] && duplicate=1 + done + [ "$duplicate" = 0 ] && RDNSS="$RDNSS $radns" + done + + for dns in $RDNSS; do + proto_add_dns_server "$dns" + done + + for domain in $DOMAINS; do + proto_add_dns_search "$domain" + done + + for prefix in $PREFIXES; do + proto_add_ipv6_prefix "$prefix" + done + + [ -n "$USERPREFIX" ] && proto_add_ipv6_prefix "$USERPREFIX" + + # Merge addresses + for entry in $RA_ADDRESSES; do + local duplicate=0 + local addr="${entry%%/*}" + for dentry in $ADDRESSES; do + local daddr="${dentry%%/*}" + [ "$addr" = "$daddr" ] && duplicate=1 + done + [ "$duplicate" = "0" ] && ADDRESSES="$ADDRESSES $entry" + done + + for entry in $ADDRESSES; do + local addr="${entry%%/*}" + entry="${entry#*/}" + local mask="${entry%%,*}" + entry="${entry#*,}" + local preferred="${entry%%,*}" + entry="${entry#*,}" + local valid="${entry%%,*}" + + proto_add_ipv6_address "$addr" "$mask" "$preferred" "$valid" 1 + done + + for entry in $RA_ROUTES; do + local addr="${entry%%/*}" + entry="${entry#*/}" + local mask="${entry%%,*}" + entry="${entry#*,}" + local gw="${entry%%,*}" + entry="${entry#*,}" + local valid="${entry%%,*}" + entry="${entry#*,}" + local metric="${entry%%,*}" + + proto_add_ipv6_route "$addr" "$mask" "$gw" "$metric" "$valid" + done + + proto_send_update "$INTERFACE" + + # TODO: $SNTP_IP $SIP_IP $SNTP_FQDN $SIP_DOMAIN +} + +teardown_interface() { + proto_init_update "*" 0 + proto_send_update "$INTERFACE" +} + +case "$2" in + informed|bound|updated|rebound|ra-updated) + setup_interface "$1" + ;; + started|stopped|unbound) + teardown_interface "$1" + ;; +esac + +# user rules +[ -f /etc/odhcp6c.user ] && . /etc/odhcp6c.user + +exit 0 |