You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

47 lines
1.2 KiB

package network
import (
"XProxy/cmd/common"
log "github.com/sirupsen/logrus"
"time"
)
type Config struct {
RouteTable int
TProxyPort int
Address string
Gateway string
Bypass []string
Exclude []string
}
var run = common.RunCommand
func Load(dns []string, ipv4 *Config, ipv6 *Config, dev string) {
loadDns(dns) // init dns server
delay := false
setV4 := ipv4.Address != "" || ipv4.Gateway != ""
setV6 := ipv6.Address != "" || ipv6.Gateway != ""
if setV4 && setV6 { // clear network settings
delay = true
flushNetwork(dev)
loadV4Network(ipv4, dev)
loadV6Network(ipv6, dev)
} else if setV6 {
delay = true
flushV6Network(dev)
loadV6Network(ipv6, dev)
} else if setV4 {
flushV4Network(dev)
loadV4Network(ipv4, dev)
} else {
log.Infof("Skip system IP configure")
}
if delay {
log.Info("Wait 1s for IPv6 setting up")
time.Sleep(time.Second) // wait for ipv6 setting up (ND protocol) -> RA should reply less than 0.5s
}
loadV4TProxy(ipv4, getV4Cidr())
loadV6TProxy(ipv6, getV6Cidr())
}