function add_tunnel($mode, $type, $devnam, $inf, $remote, $local, $mtu) { /* Prepare the remote/local commands. */ if ($remote != "") { $rcmd = " remote " . $remote; } if ($local != "") { $lcmd = " local " . $local; } /* add the tunnel. */ if ($mode == "6IN4" || $mode == "6TO4" || $mode == "6RD") { echo "ip tunnel add " . $devnam . " mode sit ttl 128" . $rcmd . $lcmd . "\n"; } else { if ($mode == "TSP") { if ($type == "v6v4") { echo "ip tunnel add " . $devnam . " mode sit ttl 64" . $rcmd . $lcmd . "\n"; } else { echo "ip tuntap add " . $devnam . " mode tun\n"; } } else { return ""; } } if ($mode == "6RD") { $p = XNODE_getpathbytarget("/runtime", "inf", "uid", $inf, 0); $ipaddr = query($p . "/inet/ipv6/ipv6in4/rd/ipaddr"); $prefix = query($p . "/inet/ipv6/ipv6in4/rd/prefix"); $v4mask = query($p . "/inet/ipv6/ipv6in4/rd/v4mask"); $hubspoke = query($p . "/inet/ipv6/ipv6in4/rd/hubspokemode"); $networkid = ipv4networkid($local, $v4mask); if ($v4mask != "0") { $rpcmd = " 6rd-relay_prefix " . $networkid . "/" . $v4mask; } else { $rpcmd = ""; } if ($hubspoke != "1") { echo "ip tunnel 6rd dev " . $devnam . " 6rd-prefix " . $ipaddr . "/" . $prefix . $rpcmd . "\n"; } } /* Enable IPv6 on the tunnel device. */ if ($mtu != "") { echo "ip link set " . $devnam . " mtu " . $mtu . "\n"; } echo "ip link set " . $devnam . " up\n"; echo "echo 0 > /proc/sys/net/ipv6/conf/" . $devnam . "/disable_ipv6\n"; $uid = "TUN." . $inf; $p = PHYINF_setup($uid, "tunnel", $devnam); set($p . "/tunnel/mode", $mode); set($p . "/tunnel/type", $type); set($p . "/tunnel/remote", $remote); set($p . "/tunnel/local", $local); return $uid; }
*/ $up = fread("", "/var/run/BAND5G-1.1.UP"); if ($i == 2 && $active == 1 && $up == "") { startcmd("ip link set " . devname('BAND5G-1.1') . " up"); startcmd("ip link set " . devname('BAND5G-1.1') . " down"); } $down = fread("", "/var/run/" . $uid . ".DOWN"); $down += 0; if ($down == "1") { startcmd("# " . $uid . " has been shutdown."); } else { if ($active != 1) { startcmd("# " . $uid . " is inactive!"); } else { startcmd("# " . $uid . ", dev=" . $dev); PHYINF_setup($uid, "wifi", $dev); $brdev = find_brdev($uid); // startcmd("ip link set ".$dev." up"); /* bring up guestzone bridge */ if (isguestzone($uid) == "1") { startcmd("ip link set " . $brdev . " up"); } startcmd("ifconfig " . $dev . " txqueuelen 250"); if ($brdev != "") { startcmd("brctl addif " . $brdev . " " . $dev); } startcmd("phpsh /etc/scripts/wifirnodes.php UID=" . $uid); /* +++ upwifistats */ startcmd("xmldbc -P /etc/services/WIFI/updatewifistats.php -V PHY_UID=" . $uid . " > /var/run/restart_upwifistats_5g.sh;"); startcmd("phpsh /var/run/restart_upwifistats_5g.sh"); /* --- upwifistats */
<?php /* $IFNAME, $DEVICE, $SPEED, $IP, $REMOTE, $PARAM */ include "/htdocs/phplib/trace.php"; include "/htdocs/phplib/xnode.php"; include "/htdocs/phplib/phyinf.php"; $infp = XNODE_getpathbytarget("", "inf", "uid", $PARAM, 0); if ($infp == "") { exit; } $inet = query($infp . "/inet"); if ($inet == "") { exit; } $defaultroute = query($infp . "/defaultroute"); /* create phyinf */ PHYINF_setup("PPP." . $PARAM, "ppp", $IFNAME); $inetp = XNODE_getpathbytarget("/inet", "entry", "uid", $inet, 0); /* create inf */ $stsp = XNODE_getpathbytarget("/runtime", "inf", "uid", $PARAM, 1); $mtu = query($stsp . "/pppd/mtu"); del($stsp . "/inet"); set($stsp . "/inet/uid", $inet); set($stsp . "/inet/addrtype", "ppp4"); set($stsp . "/inet/uptime", query("/runtime/device/uptime")); set($stsp . "/inet/ppp4/valid", "1"); set($stsp . "/inet/ppp4/mtu", $mtu); set($stsp . "/inet/ppp4/local", $IP); set($stsp . "/inet/ppp4/peer", $REMOTE); set($stsp . "/nativephyinf", query($infp . "/phyinf")); set($stsp . "/phyinf", "PPP." . $PARAM); set($stsp . "/defaultroute", $defaultroute);
function layout_router($mode) { SHELL_info($START, "LAYOUT: Start router layout ..."); $Wan_index_number = query("/device/router/wanindex"); /* Start .......................................................................... */ /* Config RTL8367 as router mode layout. (1 WAN + 4 LAN) */ setup_switch("router"); //+++ hendry, for wifi topology $p = XNODE_getpathbytarget("", "phyinf", "uid", "ETH-1", 0); set($p . "/bridge/ports/entry:1/uid", "MBR-1"); set($p . "/bridge/ports/entry:1/phyinf", "BAND24G-1.1"); set($p . "/bridge/ports/entry:2/uid", "MBR-2"); set($p . "/bridge/ports/entry:2/phyinf", "BAND5G-1.1"); $p = XNODE_getpathbytarget("", "phyinf", "uid", "ETH-2", 0); set($p . "/bridge/ports/entry:1/uid", "MBR-1"); set($p . "/bridge/ports/entry:1/phyinf", "BAND24G-1.2"); set($p . "/bridge/ports/entry:2/uid", "MBR-2"); set($p . "/bridge/ports/entry:2/phyinf", "BAND5G-1.2"); //--- hendry /* Setup MAC address */ $wanmac = PHYINF_getmacsetting("WAN-1"); $lanmac = PHYINF_getmacsetting("LAN-1"); setup_vlaninf("eth2", "1", $lanmac); setup_vlaninf("eth2", "2", $wanmac); /* set smaller tx queue len */ startcmd("ifconfig eth2 txqueuelen 200"); /* Create bridge interface. */ startcmd("brctl addbr br0; brctl stp br0 off; brctl setfd br0 0"); startcmd("brctl addif br0 eth2.1"); //startcmd("brctl addif br0 wifig0"); //startcmd("brctl addif br0 wifig0.1"); startcmd("ip link set br0 up"); if ($mode == "1W2L") { startcmd("brctl addbr br1; brctl stp br1 off; brctl setfd br1 0"); //hendry, we let guestzone to bring br1 up //startcmd("ip link set br1 up");; } /* Setup the runtime nodes. */ if ($mode == "1W1L") { PHYINF_setup("ETH-1", "eth", "br0"); PHYINF_setup("ETH-2", "eth", "eth2.2"); /* set Service Alias */ startcmd('service PHYINF.ETH-1 alias PHYINF.LAN-1'); startcmd('service PHYINF.ETH-2 alias PHYINF.WAN-1'); /* WAN: set extension nodes for linkstatus */ $path = XNODE_getpathbytarget("/runtime", "phyinf", "uid", "ETH-2", 0); startcmd('xmldbc -x ' . $path . '/linkstatus "get:psts -i ' . $Wan_index_number . '"'); } else { if ($mode == "1W2L") { PHYINF_setup("ETH-1", "eth", "br0"); PHYINF_setup("ETH-2", "eth", "br1"); PHYINF_setup("ETH-3", "eth", "eth2.2"); /* set Service Alias */ startcmd('service PHYINF.ETH-1 alias PHYINF.LAN-1'); startcmd('service PHYINF.ETH-2 alias PHYINF.LAN-2'); startcmd('service PHYINF.ETH-3 alias PHYINF.WAN-1'); /* WAN: set extension nodes for linkstatus */ $path = XNODE_getpathbytarget("/runtime", "phyinf", "uid", "ETH-3", 0); startcmd('xmldbc -x ' . $path . '/linkstatus "get:psts -i ' . $Wan_index_number . '"'); } } //+++ hendry $p = XNODE_getpathbytarget("/runtime", "phyinf", "uid", "ETH-1", 0); add($p . "/bridge/port", "BAND24G-1.1"); add($p . "/bridge/port", "BAND5G-1.1"); $p = XNODE_getpathbytarget("/runtime", "phyinf", "uid", "ETH-2", 0); add($p . "/bridge/port", "BAND24G-1.2"); add($p . "/bridge/port", "BAND5G-1.2"); //--- hendry /* LAN: set extension nodes for linkstatus */ $path = XNODE_getpathbytarget("/runtime", "phyinf", "uid", "ETH-1", 0); startcmd('xmldbc -x ' . $path . '/linkstatus:1 "get:psts -i 4"'); startcmd('xmldbc -x ' . $path . '/linkstatus:2 "get:psts -i 3"'); startcmd('xmldbc -x ' . $path . '/linkstatus:3 "get:psts -i 2"'); startcmd('xmldbc -x ' . $path . '/linkstatus:4 "get:psts -i 1"'); /* Done */ startcmd("xmldbc -s /runtime/device/layout router"); startcmd("xmldbc -s /runtime/device/router/mode " . $mode); startcmd("usockc /var/gpio_ctrl ROUTER"); startcmd("service PHYINF.ETH-1 start"); startcmd("service PHYINF.ETH-2 start"); if ($mode == "1W2L") { startcmd("service PHYINF.ETH-3 start"); } /* Stop ........................................................................... */ SHELL_info($STOP, "LAYOUT: Stop router layout ..."); if ($mode == "1W2L") { stopcmd("service PHYINF.ETH-3 stop"); stopcmd('service PHYINF.LAN-2 delete'); } stopcmd("service PHYINF.ETH-2 stop"); stopcmd("service PHYINF.ETH-1 stop"); stopcmd('service PHYINF.WAN-1 delete'); stopcmd('service PHYINF.LAN-1 delete'); stopcmd('xmldbc -s /runtime/device/layout ""'); stopcmd('/etc/scripts/delpathbytarget.sh /runtime phyinf uid ETH-1'); stopcmd('/etc/scripts/delpathbytarget.sh /runtime phyinf uid ETH-2'); stopcmd('/etc/scripts/delpathbytarget.sh /runtime phyinf uid ETH-3'); //stopcmd('brctl delif br0 wifig0'); stopcmd('brctl delif br0 eth2.1'); //stopcmd('brctl delif br1 wifig0.1'); stopcmd('ip link set eth2.1 down'); stopcmd('ip link set eth2.2 down'); stopcmd('brctl delbr br0; brctl delbr br1'); stopcmd('vconfig rem eth2.1; vconfig rem eth2.2'); return 0; }