diff --git a/go/pkg/pass1/cut-netspoc.go b/go/pkg/pass1/cut-netspoc.go index 73b68d0a..31a7c6a7 100644 --- a/go/pkg/pass1/cut-netspoc.go +++ b/go/pkg/pass1/cut-netspoc.go @@ -576,7 +576,7 @@ func (c *spoc) cutNetspoc( // Mark management_instance of routers for _, r := range c.managedRouters { - if r.model.needManagementInstance { + if isUsed[r.name] && r.model.needManagementInstance { if mr := c.getRouter(r.deviceName, r.ipV6); mr != nil { for _, intf := range getIntf(mr) { setIntfUsed(intf, isUsed) diff --git a/go/testdata/cut-netspoc/cut-netspoc.t b/go/testdata/cut-netspoc/cut-netspoc.t index 6328b3bf..26795085 100644 --- a/go/testdata/cut-netspoc/cut-netspoc.t +++ b/go/testdata/cut-netspoc/cut-netspoc.t @@ -3485,7 +3485,7 @@ service:s1 = { =END= ############################################################ -=TITLE=Retain management_instance +=TITLE=Retain management_instance of used router =TEMPL=input network:n1 = { ip = 10.1.1.0/24; } network:n2 = { ip = 10.1.2.0/24; } @@ -3516,4 +3516,25 @@ service:s1 = { [[input]] =OUTPUT= [[input]] +=END= + +############################################################ +=TITLE=Ignore management_instance of unused router +=INPUT= +[[input]] +router:r2 = { + model = NSX; + management_instance; + interface:n3 = { ip = 10.1.3.2; } +} +router:r2@v1 = { + model = NSX, T0; + managed; + routing = manual; + interface:n3 = { ip = 10.1.3.2; hardware = IN; } + interface:n4 = { ip = 10.1.4.1; hardware = OUT; } +} +network:n4 = { ip = 10.1.4.0/24; } +=OUTPUT= +[[input]] =END= \ No newline at end of file