|
@@ -155,8 +155,8 @@ func (d *driver) CreateNetwork(id string, option map[string]interface{}, nInfo d
|
|
|
// Make sure no rule is on the way from any stale secure network
|
|
|
if !n.secure {
|
|
|
for _, vni := range vnis {
|
|
|
- programMangle(vni, false)
|
|
|
- programInput(vni, false)
|
|
|
+ d.programMangle(vni, false)
|
|
|
+ d.programInput(vni, false)
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -215,14 +215,14 @@ func (d *driver) DeleteNetwork(nid string) error {
|
|
|
|
|
|
if n.secure {
|
|
|
for _, s := range n.subnets {
|
|
|
- if err := programMangle(s.vni, false); err != nil {
|
|
|
+ if err := d.programMangle(s.vni, false); err != nil {
|
|
|
log.G(context.TODO()).WithFields(log.Fields{
|
|
|
"error": err,
|
|
|
"network_id": n.id,
|
|
|
"subnet": s.subnetIP,
|
|
|
}).Warn("Failed to clean up iptables rules during overlay network deletion")
|
|
|
}
|
|
|
- if err := programInput(s.vni, false); err != nil {
|
|
|
+ if err := d.programInput(s.vni, false); err != nil {
|
|
|
log.G(context.TODO()).WithFields(log.Fields{
|
|
|
"error": err,
|
|
|
"network_id": n.id,
|
|
@@ -430,8 +430,11 @@ func (n *network) setupSubnetSandbox(s *subnet, brName, vxlanName string) error
|
|
|
return fmt.Errorf("bridge creation in sandbox failed for subnet %q: %v", s.subnetIP.String(), err)
|
|
|
}
|
|
|
|
|
|
- err := createVxlan(vxlanName, s.vni, n.maxMTU())
|
|
|
+ v6transport, err := n.driver.isIPv6Transport()
|
|
|
if err != nil {
|
|
|
+ log.G(context.TODO()).WithError(err).Errorf("Assuming IPv4 transport; overlay network %s will not pass traffic if the Swarm data plane is IPv6.", n.id)
|
|
|
+ }
|
|
|
+ if err := createVxlan(vxlanName, s.vni, n.maxMTU(), v6transport); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
|
|
@@ -522,12 +525,12 @@ func (n *network) initSubnetSandbox(s *subnet) error {
|
|
|
// Program iptables rules for mandatory encryption of the secure
|
|
|
// network, or clean up leftover rules for a stale secure network which
|
|
|
// was previously assigned the same VNI.
|
|
|
- if err := programMangle(s.vni, n.secure); err != nil {
|
|
|
+ if err := n.driver.programMangle(s.vni, n.secure); err != nil {
|
|
|
return err
|
|
|
}
|
|
|
- if err := programInput(s.vni, n.secure); err != nil {
|
|
|
+ if err := n.driver.programInput(s.vni, n.secure); err != nil {
|
|
|
if n.secure {
|
|
|
- return multierror.Append(err, programMangle(s.vni, false))
|
|
|
+ return multierror.Append(err, n.driver.programMangle(s.vni, false))
|
|
|
}
|
|
|
}
|
|
|
|