X-Git-Url: http://git.archive.openwrt.org/?p=packages.git;a=blobdiff_plain;f=ipv6%2Ftayga%2Ffiles%2Ftayga.sh;fp=ipv6%2Ftayga%2Ffiles%2Ftayga.sh;h=0000000000000000000000000000000000000000;hp=a9edb6d0b10335e9af04a12e283e64236fa968db;hb=8dcfd9b2e19e6d3b93e34fb1fa0bfc6fc5a29994;hpb=0791e7eb6384f74f9f7aa3cb019cb34091e15d78 diff --git a/ipv6/tayga/files/tayga.sh b/ipv6/tayga/files/tayga.sh deleted file mode 100644 index a9edb6d0b..000000000 --- a/ipv6/tayga/files/tayga.sh +++ /dev/null @@ -1,152 +0,0 @@ -# tayga.sh - NAT64 backend - -find_tayga_wanif4() { - local if=$(ip -4 r l e 0.0.0.0/0); if="${if#default* dev }"; if="${if%% *}" - [ -n "$if" ] && grep -qs "^ *$if:" /proc/net/dev && echo "$if" -} - -find_tayga_wanip4() { - local ip=$(ip -4 a s dev "$1"); ip="${ip#*inet }" - echo "${ip%%[^0-9.]*}" -} - -find_tayga_wanif6() { - local if=$(ip -6 r l e ::/0); if="${if#default* dev }"; if="${if%% *}" - [ -n "$if" ] && grep -qs "^ *$if:" /proc/net/dev && echo "$if" -} - -find_tayga_wanip6() { - local ip=$(ip -6 a s dev "$1"); ip="${ip#*inet6 }" - echo "${ip%%[^0-9A-Fa-f:]*}" -} - -# Hook into scan_interfaces() to synthesize a .device option -# This is needed for /sbin/ifup to properly dispatch control -# to setup_interface_tayga() even if no .ifname is set in -# the configuration. -scan_tayga() { - config_set "$1" device "tayga-$1" -} - -coldplug_interface_tayga() { - setup_interface_tayga "tayga-$1" "$1" -} - -tayga_add_static_mappings() { - local tmpconf="$1" - - ( - . /lib/functions.sh - config_load firewall - - tayga_map_rule_add() { - local cfg="$1" - local tmpconf="$2" - local ipv4_addr ipv6_addr - config_get ipv4_addr "$cfg" ipv4_addr "" - config_get ipv6_addr "$cfg" ipv6_addr "" - [ -n "$ipv4_addr" ] && [ -n "$ipv6_addr" ] && - echo "map $ipv4_addr $ipv6_addr" >>$tmpconf - } - - config_foreach tayga_map_rule_add nat64 "$tmpconf" - ) -} - -setup_interface_tayga() { - local iface="$1" - local cfg="$2" - local link="tayga-$cfg" - - local ipv4_addr ipv6_addr prefix dynamic_pool - - config_get ipv4_addr "$cfg" ipv4_addr - config_get ipv6_addr "$cfg" ipv6_addr - config_get prefix "$cfg" prefix - config_get dynamic_pool "$cfg" dynamic_pool - - local args - - include /lib/network - scan_interfaces - - local wanip4=$(uci_get network "$cfg" ipv4addr) - local wanip6=$(uci_get network "$cfg" ipv6addr) - - local wanif4=$(find_tayga_wanif4) - local wanif6=$(find_tayga_wanif6) - - [ -z "$wanip4" ] && { - [ -n "$wanif4" ] && { - wanip4=$(find_tayga_wanip4 "$wanif4") - uci_set_state network "$cfg" wan4_device "$wanif4" - } - } - - [ -z "$wanip6" ] && { - [ -n "$wanif6" ] && { - wanip6=$(find_tayga_wanip6 "$wanif6") - uci_set_state network "$cfg" wan6_device "$wanif6" - } - } - - [ -n "$wanip4" ] && [ -n "$wanip6" ] || { - echo "Cannot determine local IPv4 and IPv6 addressed for tayga NAT64 $cfg - skipping" - return 1 - } - - local tmpconf="/var/etc/tayga-$cfg.conf" - args="-c $tmpconf" - mkdir -p /var/etc - mkdir -p /var/run/tayga/$cfg - - echo "tun-device $link" >$tmpconf - echo "ipv4-addr $ipv4_addr" >>$tmpconf - [ -n "$ipv6_addr" ] && - echo "ipv6-addr $ipv6_addr" >>$tmpconf - [ -n "$prefix" ] && - echo "prefix $prefix" >>$tmpconf - - tayga_add_static_mappings "$tmpconf" - - [ -n "$dynamic_pool" ] && - echo "dynamic-pool $dynamic_pool" >>$tmpconf - echo "data-dir /var/run/tayga/$cfg" >>$tmpconf - - # creating the tunnel below will trigger a net subsystem event - # prevent it from touching or iface by disabling .auto here - uci_set_state network "$cfg" ifname $link - uci_set_state network "$cfg" auto 0 - - # here we create TUN device and check configuration - tayga $args --mktun || return 1 - - ip link set "$link" up - - ip addr add "$wanip4" dev "$link" - ip addr add "$wanip6" dev "$link" - - [ -n "$dynamic_pool" ] && - ip -4 route add "$dynamic_pool" dev "$link" - [ -n "$prefix" ] && - ip -6 route add "$prefix" dev "$link" - - start-stop-daemon -S -x tayga -- $args -p /var/run/$link.pid - - env -i ACTION="ifup" DEVICE="$link" INTERFACE="$cfg" PROTO="tayga" \ - /sbin/hotplug-call iface -} - -stop_interface_tayga() { - local cfg="$1" - local link="tayga-$cfg" - - env -i ACTION="ifdown" DEVICE="$link" INTERFACE="$cfg" PROTO="tayga" \ - /sbin/hotplug-call iface - - service_kill tayga "/var/run/$link.pid" - - ip link set "$link" down - ip addr flush dev "$link" - ip route flush dev "$link" -}