refactor: remove strict bind configuration from BGP templates and update related logic. Eliminate 'strict bind on' from both IPv4 and IPv6 templates to simplify BGP peer rendering. Adjust OpenAPI documentation and internal handling of BGP source addresses to reflect these changes, enhancing clarity and compatibility.
CI / changes (push) Successful in 7s
CI / openapi (push) Successful in 23s
CI / go (push) Successful in 24s
CI / docker-web (deploy/docker/evobgp-web/Dockerfile, , evobgp-web) (push) Successful in 1m7s
CI / docker-web (deploy/docker/evobgp-web/Dockerfile, evobgp-all, evobgp-web-all) (push) Successful in 1m2s
CI / docker-bird (push) Has been skipped
CI / bird2 (push) Successful in 55s
CI / docker-go (deploy/docker/evobgp-agent/Dockerfile, , evobgp-agent) (push) Successful in 54s
CI / docker-go (evobgp-all, 1, deploy/docker/gobinary/Dockerfile, , evobgp-all) (push) Successful in 2m19s
CI / docker-go (evobgp-api, 1, deploy/docker/gobinary/Dockerfile, , evobgp-api) (push) Successful in 2m27s
CI / docker-go (evobgp-deploy, 0, deploy/docker/gobinary/Dockerfile, , evobgp-deploy) (push) Successful in 1m22s
CI / docker-go (evobgp-ingest, 0, deploy/docker/gobinary/Dockerfile, , evobgp-ingest) (push) Successful in 1m26s
CI / docker-go (evobgp-node, 0, deploy/docker/gobinary/Dockerfile, , evobgp-node) (push) Successful in 1m9s
CI / docker-go (evobgp-render, 0, deploy/docker/gobinary/Dockerfile, , evobgp-render) (push) Successful in 1m19s
CI / docker-go (evobgp-scheduler, 0, deploy/docker/gobinary/Dockerfile, , evobgp-scheduler) (push) Successful in 1m19s
CI / changes (push) Successful in 7s
CI / openapi (push) Successful in 23s
CI / go (push) Successful in 24s
CI / docker-web (deploy/docker/evobgp-web/Dockerfile, , evobgp-web) (push) Successful in 1m7s
CI / docker-web (deploy/docker/evobgp-web/Dockerfile, evobgp-all, evobgp-web-all) (push) Successful in 1m2s
CI / docker-bird (push) Has been skipped
CI / bird2 (push) Successful in 55s
CI / docker-go (deploy/docker/evobgp-agent/Dockerfile, , evobgp-agent) (push) Successful in 54s
CI / docker-go (evobgp-all, 1, deploy/docker/gobinary/Dockerfile, , evobgp-all) (push) Successful in 2m19s
CI / docker-go (evobgp-api, 1, deploy/docker/gobinary/Dockerfile, , evobgp-api) (push) Successful in 2m27s
CI / docker-go (evobgp-deploy, 0, deploy/docker/gobinary/Dockerfile, , evobgp-deploy) (push) Successful in 1m22s
CI / docker-go (evobgp-ingest, 0, deploy/docker/gobinary/Dockerfile, , evobgp-ingest) (push) Successful in 1m26s
CI / docker-go (evobgp-node, 0, deploy/docker/gobinary/Dockerfile, , evobgp-node) (push) Successful in 1m9s
CI / docker-go (evobgp-render, 0, deploy/docker/gobinary/Dockerfile, , evobgp-render) (push) Successful in 1m19s
CI / docker-go (evobgp-scheduler, 0, deploy/docker/gobinary/Dockerfile, , evobgp-scheduler) (push) Successful in 1m19s
This commit is contained in:
+4
-13
@@ -12,7 +12,7 @@ const (
|
||||
)
|
||||
|
||||
// BGPTemplatesOptions holds ASN and export filters for template bgp bgp_template (+ v6 mirror).
|
||||
// Templates use "local as <asn>;" only (no local IP); peers supply source address / optional local override.
|
||||
// Templates use "local as <asn>;" only (no local IP); peers add neighbor / multihop / passive and optional "local … as …" override.
|
||||
type BGPTemplatesOptions struct {
|
||||
LocalASN uint32
|
||||
ExportFilterV4 string
|
||||
@@ -43,8 +43,6 @@ func RenderBGPTemplates(opts BGPTemplatesOptions) (string, error) {
|
||||
b.WriteString(" };\n")
|
||||
b.WriteString(" hold time 90;\n")
|
||||
b.WriteString(" keepalive time 30;\n")
|
||||
// Жёсткая привязка к source address (см. пир): полезно в Docker / bridge, иначе listen может уйти на 0.0.0.0.
|
||||
b.WriteString(" strict bind on;\n")
|
||||
b.WriteString("}\n\n")
|
||||
fmt.Fprintf(&b, "template bgp %s {\n", BGPTemplateNameV6)
|
||||
fmt.Fprintf(&b, " local as %d;\n", opts.LocalASN)
|
||||
@@ -56,7 +54,6 @@ func RenderBGPTemplates(opts BGPTemplatesOptions) (string, error) {
|
||||
b.WriteString(" };\n")
|
||||
b.WriteString(" hold time 90;\n")
|
||||
b.WriteString(" keepalive time 30;\n")
|
||||
b.WriteString(" strict bind on;\n")
|
||||
b.WriteString("}\n")
|
||||
return b.String(), nil
|
||||
}
|
||||
@@ -67,14 +64,12 @@ type BGPPeerFromTemplateOptions struct {
|
||||
TemplateName string
|
||||
NeighborIP string
|
||||
NeighborASN uint32
|
||||
SourceAddress string
|
||||
// If set, emits "local … as …" before neighbor (overrides template local/ASN for this peer).
|
||||
OverrideLocalIP string
|
||||
OverrideLocalASN uint32
|
||||
}
|
||||
|
||||
// RenderProtocolBGPFromTemplate renders protocol bgp … from TEMPLATE { neighbor; multihop; source address; strict bind; passive; }.
|
||||
// strict bind дублируется и в шаблоне, и в каждом пире — явная фиксация на сессию.
|
||||
// RenderProtocolBGPFromTemplate renders protocol bgp … from TEMPLATE { neighbor; multihop; passive; }.
|
||||
func RenderProtocolBGPFromTemplate(opts BGPPeerFromTemplateOptions) (string, error) {
|
||||
if strings.TrimSpace(opts.ProtocolName) == "" {
|
||||
return "", fmt.Errorf("birdfmt: protocol name is required")
|
||||
@@ -82,8 +77,8 @@ func RenderProtocolBGPFromTemplate(opts BGPPeerFromTemplateOptions) (string, err
|
||||
if strings.TrimSpace(opts.TemplateName) == "" {
|
||||
return "", fmt.Errorf("birdfmt: template name is required")
|
||||
}
|
||||
if strings.TrimSpace(opts.NeighborIP) == "" || strings.TrimSpace(opts.SourceAddress) == "" {
|
||||
return "", fmt.Errorf("birdfmt: neighbor and source address are required")
|
||||
if strings.TrimSpace(opts.NeighborIP) == "" {
|
||||
return "", fmt.Errorf("birdfmt: neighbor is required")
|
||||
}
|
||||
if opts.NeighborASN == 0 {
|
||||
return "", fmt.Errorf("birdfmt: neighbor ASN must be non-zero")
|
||||
@@ -107,10 +102,6 @@ func RenderProtocolBGPFromTemplate(opts BGPPeerFromTemplateOptions) (string, err
|
||||
b.WriteString(strings.TrimSpace(opts.NeighborIP))
|
||||
fmt.Fprintf(&b, " as %d;\n", opts.NeighborASN)
|
||||
b.WriteString(" multihop;\n")
|
||||
b.WriteString(" source address ")
|
||||
b.WriteString(strings.TrimSpace(opts.SourceAddress))
|
||||
b.WriteString(";\n")
|
||||
b.WriteString(" strict bind on;\n")
|
||||
b.WriteString(" passive;\n")
|
||||
b.WriteString("}\n")
|
||||
return b.String(), nil
|
||||
|
||||
Reference in New Issue
Block a user