#
# Static routes
#
- set routes [getStatIPv4routes $target]
+ set routes [concat [getStatIPv4routes $target] \
+ [getStatIPv6routes $target]]
labelframe $wi.statrt -padx 4 -pady 4
label $wi.statrt.label -text "Static routes:"
pack $wi.statrt.label -side top -anchor w
if { $h < 2 } {
set h 2
}
- text $wi.statrt.cfg.text -bg white \
- -width 36 -height $h -takefocus 0
+ text $wi.statrt.cfg.text -font arial -bg white \
+ -width 40 -height $h -takefocus 0
foreach route $routes {
$wi.statrt.cfg.text insert end "$route\r"
}
}
if {[lsearch {router pc host} [nodeType $target]] >= 0} {
- set ifconfchanged 0
foreach ifc [ifcList $target] {
#
# Operational state
setIfcOperState $target $ifc $ifoperstate
updateIfcLabel $target [peerByIfc $target $ifc]
set changed 1
- set ifconfchanged 1
}
#
setIfcIPv4addr $target $ifc $ipaddr
updateIfcLabel $target [peerByIfc $target $ifc]
set changed 1
- set ifconfchanged 1
}
set ipaddr [$wi.if$ifc.cfg.ipv6.addrv get]
set oldipaddr [getIfcIPv6addr $target $ifc]
setIfcIPv6addr $target $ifc $ipaddr
updateIfcLabel $target [peerByIfc $target $ifc]
set changed 1
- set ifconfchanged 1
}
set mtu [$wi.if$ifc.cfg.ipv4.mtuv get]
}
- set oldstatrtes [getStatIPv4routes $target]
- set newstatrtes {}
+ set oldIPv4statrtes [lsort [getStatIPv4routes $target]]
+ set oldIPv6statrtes [lsort [getStatIPv6routes $target]]
+ set newIPv4statrtes {}
+ set newIPv6statrtes {}
set i 1
while { 1 } {
set text [$wi.statrt.cfg.text get $i.0 $i.end]
- set text [string trim $text]
- if { $text == "" } {
+ set rtentry [lrange [split [string trim $text]] 0 2]
+ if { $rtentry == "" } {
+ break
+ }
+ set dst [lindex $rtentry 0]
+ set gw [lindex $rtentry 1]
+ set metric [lindex $rtentry 2]
+ if { [string is integer $metric] != 1 || \
+ $metric > 65535 } {
+ break
+ }
+ if { [checkIPv4Net $dst] == 1 } {
+ if { [checkIPv4Addr $gw] == 1 } {
+ lappend newIPv4statrtes \
+ [string trim "$dst $gw $metric"]
+ } else {
+ break
+ }
+ } elseif { [checkIPv6Net $dst] == 1 } {
+ if { [checkIPv6Addr $gw] == 1 } {
+ lappend newIPv6statrtes \
+ [string trim "$dst $gw $metric"]
+ } else {
+ break
+ }
+ } else {
break
}
- lappend newstatrtes $text
incr i
}
- if { [lsort $oldstatrtes] != [lsort $newstatrtes] || \
- $ifconfchanged == 1} {
- setStatIPv4routes $target $newstatrtes
+ set newIPv4statrtes [lsort $newIPv4statrtes]
+ if { $oldIPv4statrtes != $newIPv4statrtes } {
+ setStatIPv4routes $target $newIPv4statrtes
+ set changed 1
+ }
+ set newIPv6statrtes [lsort $newIPv6statrtes]
+ if { $oldIPv6statrtes != $newIPv6statrtes } {
+ setStatIPv6routes $target $newIPv6statrtes
set changed 1
}
lappend cfg "}"
lappend cfg ""
- set statrtes [getStatIPv4routes $node]
- if { $statrtes != "" } {
- lappend cfg "protocols {"
- lappend cfg " static {"
- foreach rte $statrtes {
- set dest [lindex $rte 0]
- set gw [lindex $rte 1]
- lappend cfg " route4 $dest {"
- lappend cfg " next-hop: $gw"
- lappend cfg " metric: 0"
- lappend cfg " }"
+ lappend cfg "protocols {"
+ lappend cfg " static {"
+ foreach rte [getStatIPv4routes $node] {
+ set dest [lindex $rte 0]
+ set gw [lindex $rte 1]
+ set metric [lindex $rte 2]
+ if { $metric == "" } {
+ set metric 0
}
- lappend cfg " }"
- lappend cfg "}"
- lappend cfg ""
+ lappend cfg " route4 $dest {"
+ lappend cfg " next-hop: $gw"
+ lappend cfg " metric: $metric"
+ lappend cfg " }"
}
+ foreach rte [getStatIPv6routes $node] {
+ set dest [lindex $rte 0]
+ set gw [lindex $rte 1]
+ set metric [lindex $rte 2]
+ if { $metric == "" } {
+ set metric 0
+ }
+ lappend cfg " route6 $dest {"
+ lappend cfg " next-hop: $gw"
+ lappend cfg " metric: $metric"
+ lappend cfg " }"
+ }
+ lappend cfg " }"
+ lappend cfg "}"
+ lappend cfg ""
if { [netconfFetchSection $node "router rip"] != "" } {
lappend cfg "protocols {"