From 07585948362039b57f296b725ef821206a57ed86 Mon Sep 17 00:00:00 2001 From: Tim Liu Date: Fri, 26 Jul 2024 08:50:29 +0000 Subject: [PATCH] feat: add local sctp address config --- internal/ngap/server.go | 2 +- pkg/factory/config.go | 22 ++++++++++++++++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/internal/ngap/server.go b/internal/ngap/server.go index 2b5c0db..b94498e 100644 --- a/internal/ngap/server.go +++ b/internal/ngap/server.go @@ -58,7 +58,7 @@ func (s *Server) Run(wg *sync.WaitGroup) error { // n3iwf context cfg := s.Config() - localAddr := new(sctp.SCTPAddr) + localAddr := cfg.GetLocalSctpAddr() for _, remoteAddr := range cfg.GetAmfSctpAddrs() { errChan := make(chan error) diff --git a/pkg/factory/config.go b/pkg/factory/config.go index ffc2eab..2dbed9a 100644 --- a/pkg/factory/config.go +++ b/pkg/factory/config.go @@ -115,8 +115,9 @@ type Info struct { } type Configuration struct { - N3IWFInfo *N3IWFNFInfo `yaml:"N3IWFInformation" valid:"required"` - AMFSCTPAddresses []AMFSCTPAddresses `yaml:"AMFSCTPAddresses" valid:"required"` + N3IWFInfo *N3IWFNFInfo `yaml:"N3IWFInformation" valid:"required"` + LocalSctpAddr string `yaml:"localSctpAddr,omitempty" valid:"optional,host"` + AMFSCTPAddresses []AMFSCTPAddresses `yaml:"AMFSCTPAddresses" valid:"required"` TCPPort int `yaml:"NASTCPPort" valid:"required,port"` IKEBindAddr string `yaml:"IKEBindAddress" valid:"required,host"` @@ -255,6 +256,23 @@ func (c *Config) GetRanNodeName() string { return c.Configuration.N3IWFInfo.RanNodeName } +func (c *Config) GetLocalSctpAddr() *sctp.SCTPAddr { + c.RLock() + defer c.RUnlock() + + sctpAddr := new(sctp.SCTPAddr) + localAddr := c.Configuration.LocalSctpAddr + if localAddr != "" { + ipAddr, err := net.ResolveIPAddr("ip", localAddr) + if err == nil { + sctpAddr = &sctp.SCTPAddr{ + IPAddrs: []net.IPAddr{*ipAddr}, + } + } + } + return sctpAddr +} + func (c *Config) GetAmfSctpAddrs() []*sctp.SCTPAddr { c.RLock() defer c.RUnlock()