本文整理汇总了Golang中github.com/flynn/flynn/flannel/pkg/ip.IP4Net类的典型用法代码示例。如果您正苦于以下问题:Golang IP4Net类的具体用法?Golang IP4Net怎么用?Golang IP4Net使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了IP4Net类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Golang代码示例。
示例1: DelRoute
func (dev *vxlanDevice) DelRoute(subnet ip.IP4Net) error {
route := &netlink.Route{
Scope: netlink.SCOPE_UNIVERSE,
Dst: subnet.ToIPNet(),
Gw: subnet.IP.ToIP(),
}
log.Infof("calling RouteDel: %s", subnet)
return netlink.RouteDel(route)
}
开发者ID:ably-forks,项目名称:flynn,代码行数:9,代码来源:device.go
示例2: setupIpMasq
func setupIpMasq(localNet ip.IP4Net, overlayNet ip.IP4Net) error {
ipt, err := ip.NewIPTables()
if err != nil {
return err
}
err = ipt.ClearChain("nat", "FLANNEL")
if err != nil {
return fmt.Errorf("Failed to create/clear FLANNEL chain in NAT table: %v", err)
}
rules := [][]string{
{"FLANNEL", "-s", localNet.String(), "-o", "lo", "-j", "ACCEPT"},
{"FLANNEL", "-s", localNet.String(), "!", "-d", overlayNet.String(), "-j", "MASQUERADE"},
{"POSTROUTING", "-s", localNet.String(), "-j", "FLANNEL"},
}
for _, args := range rules {
log.Info("Adding iptables rule: ", strings.Join(args, " "))
if err := ipt.AppendUnique("nat", args...); err != nil {
return fmt.Errorf("Failed to insert IP masquerade rule: %v", err)
}
}
return nil
}
开发者ID:devick,项目名称:flynn,代码行数:27,代码来源:hostgw.go
示例3: allocateSubnet
func (sm *SubnetManager) allocateSubnet() (ip.IP4Net, error) {
log.Infof("Picking subnet in range %s ... %s", sm.config.SubnetMin, sm.config.SubnetMax)
var bag []ip.IP4
sn := ip.IP4Net{IP: sm.config.SubnetMin, PrefixLen: sm.config.SubnetLen}
OuterLoop:
for ; sn.IP <= sm.config.SubnetMax && len(bag) < 100; sn = sn.Next() {
for _, l := range sm.leases {
if sn.Overlaps(l.Network) {
continue OuterLoop
}
}
bag = append(bag, sn.IP)
}
if len(bag) == 0 {
return ip.IP4Net{}, errors.New("out of subnets")
} else {
i := randInt(0, len(bag))
return ip.IP4Net{IP: bag[i], PrefixLen: sm.config.SubnetLen}, nil
}
}
开发者ID:devick,项目名称:flynn,代码行数:23,代码来源:subnet.go
示例4: Configure
func (dev *vxlanDevice) Configure(ipn ip.IP4Net) error {
if err := setAddr4(dev.link, ipn.ToIPNet()); err != nil {
return err
}
if err := netlink.LinkSetUp(dev.link); err != nil {
return fmt.Errorf("failed to set interface %s to UP state: %s", dev.link.Attrs().Name, err)
}
// explicitly add a route since there might be a route for a subnet already
// installed by Docker and then it won't get auto added
route := netlink.Route{
LinkIndex: dev.link.Attrs().Index,
Scope: netlink.SCOPE_UNIVERSE,
Dst: ipn.Network().ToIPNet(),
}
if err := netlink.RouteAdd(&route); err != nil && err != syscall.EEXIST {
return fmt.Errorf("failed to add route (%s -> %s): %v", ipn.Network().String(), dev.link.Attrs().Name, err)
}
return nil
}
开发者ID:ably-forks,项目名称:flynn,代码行数:22,代码来源:device.go
注:本文中的github.com/flynn/flynn/flannel/pkg/ip.IP4Net类示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论