From: marko Date: Mon, 11 Jul 2005 17:09:30 +0000 (+0000) Subject: Add support for configs where only one protocol address (IPv4 or IPv6) X-Git-Url: https://git.entuzijast.net/?a=commitdiff_plain;h=6a94b4adf5e98f341ab7ade462bc2f3ead36053a;p=imunes.git Add support for configs where only one protocol address (IPv4 or IPv6) is configured on an interface, but not both. Bug found by: Submitted by: Requested by: Reviewed by: Approved by: Obtained from: --- diff --git a/host.tcl b/host.tcl index 774971b..909db5b 100755 --- a/host.tcl +++ b/host.tcl @@ -40,8 +40,14 @@ proc host.cfggen { node } { set cfg {} foreach ifc [ifcList $node] { - lappend cfg "ifconfig $ifc inet [getIfcIPv4addr $node $ifc]" - lappend cfg "ifconfig $ifc inet6 [getIfcIPv6addr $node $ifc]" + set addr [getIfcIPv4addr $node $ifc] + if { $addr != "" } { + lappend cfg "ifconfig $ifc inet $addr" + } + set addr [getIfcIPv6addr $node $ifc] + if { $addr != "" } { + lappend cfg "ifconfig $ifc inet6 $addr" + } } lappend cfg "" diff --git a/nodecfg.tcl b/nodecfg.tcl index 4059037..55778d9 100755 --- a/nodecfg.tcl +++ b/nodecfg.tcl @@ -514,7 +514,9 @@ proc setIfcIPv4addr { node ifc addr } { lappend ifcfg $line } } - lappend ifcfg " ip address $addr" + if { $addr != "" } { + lappend ifcfg " ip address $addr" + } netconfInsertSection $node $ifcfg return } @@ -538,7 +540,9 @@ proc setIfcIPv6addr { node ifc addr } { lappend ifcfg $line } } - lappend ifcfg " ipv6 address $addr" + if { $addr != "" } { + lappend ifcfg " ipv6 address $addr" + } netconfInsertSection $node $ifcfg return } diff --git a/pc.tcl b/pc.tcl index 3c76ef6..64e0049 100755 --- a/pc.tcl +++ b/pc.tcl @@ -40,8 +40,14 @@ proc pc.cfggen { node } { set cfg {} foreach ifc [ifcList $node] { - lappend cfg "ifconfig $ifc inet [getIfcIPv4addr $node $ifc]" - lappend cfg "ifconfig $ifc inet6 [getIfcIPv6addr $node $ifc]" + set addr [getIfcIPv4addr $node $ifc] + if { $addr != "" } { + lappend cfg "ifconfig $ifc inet $addr" + } + set addr [getIfcIPv6addr $node $ifc] + if { $addr != "" } { + lappend cfg "ifconfig $ifc inet6 $addr" + } } lappend cfg "" diff --git a/quagga.tcl b/quagga.tcl index 02a6ec8..4f492f0 100755 --- a/quagga.tcl +++ b/quagga.tcl @@ -41,8 +41,14 @@ proc router.quagga.cfggen { node } { foreach ifc [ifcList $node] { lappend cfg "interface $ifc" - lappend cfg " ip address [getIfcIPv4addr $node $ifc]" - lappend cfg " ipv6 address [getIfcIPv6addr $node $ifc]" + set addr [getIfcIPv4addr $node $ifc] + if { $addr != "" } { + lappend cfg " ip address $addr" + } + set addr [getIfcIPv6addr $node $ifc] + if { $addr != "" } { + lappend cfg " ipv6 address $addr" + } if { [getIfcOperState $node $ifc] == "down" } { lappend cfg " shutdown" } diff --git a/static.tcl b/static.tcl index 5884995..558205f 100755 --- a/static.tcl +++ b/static.tcl @@ -40,7 +40,14 @@ proc router.static.cfggen { node } { set cfg {} foreach ifc [ifcList $node] { - lappend cfg "ifconfig $ifc inet [getIfcIPv4addr $node $ifc]" + set addr [getIfcIPv4addr $node $ifc] + if { $addr != "" } { + lappend cfg "ifconfig $ifc inet $addr" + } + set addr [getIfcIPv6addr $node $ifc] + if { $addr != "" } { + lappend cfg "ifconfig $ifc inet6 $addr" + } } lappend cfg "" diff --git a/xorp.tcl b/xorp.tcl index 085bf13..2c50987 100755 --- a/xorp.tcl +++ b/xorp.tcl @@ -47,12 +47,16 @@ proc router.xorp.cfggen { node } { set ipv6mask "[lindex [split [getIfcIPv6addr $node $ifc] /] 1]" lappend cfg " interface $ifc {" lappend cfg " vif $ifc {" - lappend cfg " address $ipv4addr {" - lappend cfg " prefix-length: $ipv4mask" - lappend cfg " }" - lappend cfg " address $ipv6addr {" - lappend cfg " prefix-length: $ipv6mask" - lappend cfg " }" + if { $ipv4addr != "" } { + lappend cfg " address $ipv4addr {" + lappend cfg " prefix-length: $ipv4mask" + lappend cfg " }" + } + if { $ipv6addr != "" } { + lappend cfg " address $ipv6addr {" + lappend cfg " prefix-length: $ipv6mask" + lappend cfg " }" + } lappend cfg " }" lappend cfg " }" } @@ -89,14 +93,38 @@ proc router.xorp.cfggen { node } { lappend cfg " }" lappend cfg "" foreach ifc [ifcList $node] { - set ipaddr "[lindex [split [getIfcIPv4addr $node $ifc] /] 0]" - set ipmask "[lindex [split [getIfcIPv4addr $node $ifc] /] 1]" - lappend cfg " interface $ifc {" - lappend cfg " vif $ifc {" - lappend cfg " address $ipaddr {" - lappend cfg " }" - lappend cfg " }" - lappend cfg " }" + set addr "[lindex [split [getIfcIPv4addr $node $ifc] /] 0]" + if { $addr != "" } { + lappend cfg " interface $ifc {" + lappend cfg " vif $ifc {" + lappend cfg " address $addr {" + lappend cfg " }" + lappend cfg " }" + lappend cfg " }" + } + } + lappend cfg " }" + lappend cfg "}" + } + + if { [netconfFetchSection $node "router ripng"] != "" } { + lappend cfg "protocols {" + lappend cfg " ripng {" + lappend cfg " export static {" + lappend cfg " metric: 1" + lappend cfg " tag: 0" + lappend cfg " }" + lappend cfg "" + foreach ifc [ifcList $node] { + set addr "[lindex [split [getIfcIPv6addr $node $ifc] /] 0]" + if { $addr != "" } { + lappend cfg " interface $ifc {" + lappend cfg " vif $ifc {" + lappend cfg " address $addr {" + lappend cfg " }" + lappend cfg " }" + lappend cfg " }" + } } lappend cfg " }" lappend cfg "}"