mirror of
https://github.com/moby/moby.git
synced 2022-11-09 12:21:53 -05:00
Seperates the driver-specific and network-specific iptable operations
for the bridge driver. Moves two config options, namely EnableIPTables and EnableUserlandProxy from networks to the driver. Closes #242 Signed-off-by: Mohammad Banikazemi <MBanikazemi@gmail.com>
This commit is contained in:
parent
4cebc617d1
commit
12df37fdd0
15 changed files with 303 additions and 119 deletions
|
|
@ -31,7 +31,8 @@ var (
|
|||
|
||||
// PortMapper manages the network address translation
|
||||
type PortMapper struct {
|
||||
chain *iptables.Chain
|
||||
chain *iptables.ChainInfo
|
||||
bridgeName string
|
||||
|
||||
// udp:ip:port
|
||||
currentMappings map[string]*mapping
|
||||
|
|
@ -54,8 +55,9 @@ func NewWithPortAllocator(allocator *portallocator.PortAllocator) *PortMapper {
|
|||
}
|
||||
|
||||
// SetIptablesChain sets the specified chain into portmapper
|
||||
func (pm *PortMapper) SetIptablesChain(c *iptables.Chain) {
|
||||
func (pm *PortMapper) SetIptablesChain(c *iptables.ChainInfo, bridgeName string) {
|
||||
pm.chain = c
|
||||
pm.bridgeName = bridgeName
|
||||
}
|
||||
|
||||
// Map maps the specified container transport address to the host's network address and transport port
|
||||
|
|
@ -215,5 +217,5 @@ func (pm *PortMapper) forward(action iptables.Action, proto string, sourceIP net
|
|||
if pm.chain == nil {
|
||||
return nil
|
||||
}
|
||||
return pm.chain.Forward(action, sourceIP, sourcePort, proto, containerIP, containerPort)
|
||||
return pm.chain.Forward(action, sourceIP, sourcePort, proto, containerIP, containerPort, pm.bridgeName)
|
||||
}
|
||||
|
|
|
|||
|
|
@ -17,16 +17,15 @@ func init() {
|
|||
func TestSetIptablesChain(t *testing.T) {
|
||||
pm := New()
|
||||
|
||||
c := &iptables.Chain{
|
||||
Name: "TEST",
|
||||
Bridge: "192.168.1.1",
|
||||
c := &iptables.ChainInfo{
|
||||
Name: "TEST",
|
||||
}
|
||||
|
||||
if pm.chain != nil {
|
||||
t.Fatal("chain should be nil at init")
|
||||
}
|
||||
|
||||
pm.SetIptablesChain(c)
|
||||
pm.SetIptablesChain(c, "lo")
|
||||
if pm.chain == nil {
|
||||
t.Fatal("chain should not be nil after set")
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue