summaryrefslogtreecommitdiffhomepage
path: root/pkg/server
diff options
context:
space:
mode:
Diffstat (limited to 'pkg/server')
-rw-r--r--pkg/server/fsm.go14
-rw-r--r--pkg/server/server.go24
-rw-r--r--pkg/server/sockopt.go20
-rw-r--r--pkg/server/sockopt_bsd.go8
-rw-r--r--pkg/server/sockopt_linux.go36
-rw-r--r--pkg/server/sockopt_linux_test.go2
-rw-r--r--pkg/server/sockopt_openbsd.go28
7 files changed, 65 insertions, 67 deletions
diff --git a/pkg/server/fsm.go b/pkg/server/fsm.go
index 8496d3b3..4830feb2 100644
--- a/pkg/server/fsm.go
+++ b/pkg/server/fsm.go
@@ -435,7 +435,7 @@ func (fsm *FSM) connectLoop() error {
return
}
var conn net.Conn
- d := TCPDialer{
+ d := tcpDialer{
Dialer: net.Dialer{
LocalAddr: laddr,
Timeout: time.Duration(MIN_CONNECT_RETRY-1) * time.Second,
@@ -443,12 +443,12 @@ func (fsm *FSM) connectLoop() error {
AuthPassword: fsm.pConf.Config.AuthPassword,
}
if fsm.pConf.TtlSecurity.Config.Enabled {
- d.Ttl = 255
- d.TtlMin = fsm.pConf.TtlSecurity.Config.TtlMin
+ d.TTL = 255
+ d.TTLMin = fsm.pConf.TtlSecurity.Config.TtlMin
} else if fsm.pConf.Config.PeerAs != 0 && fsm.pConf.Config.PeerType == config.PEER_TYPE_EXTERNAL {
- d.Ttl = 1
+ d.TTL = 1
if fsm.pConf.EbgpMultihop.Config.Enabled {
- d.Ttl = fsm.pConf.EbgpMultihop.Config.MultihopTtl
+ d.TTL = fsm.pConf.EbgpMultihop.Config.MultihopTtl
}
}
conn, err = d.DialTCP(addr, port)
@@ -634,7 +634,7 @@ func (h *FSMHandler) active() (bgp.FSMState, *FsmStateReason) {
ttl = int(fsm.pConf.Transport.Config.Ttl)
}
if ttl != 0 {
- if err := SetTcpTTLSockopt(conn.(*net.TCPConn), ttl); err != nil {
+ if err := setTCPTTLSockopt(conn.(*net.TCPConn), ttl); err != nil {
log.WithFields(log.Fields{
"Topic": "Peer",
"Key": fsm.pConf.Config.NeighborAddress,
@@ -643,7 +643,7 @@ func (h *FSMHandler) active() (bgp.FSMState, *FsmStateReason) {
}
}
if ttlMin != 0 {
- if err := SetTcpMinTTLSockopt(conn.(*net.TCPConn), ttlMin); err != nil {
+ if err := setTCPMinTTLSockopt(conn.(*net.TCPConn), ttlMin); err != nil {
log.WithFields(log.Fields{
"Topic": "Peer",
"Key": fsm.pConf.Config.NeighborAddress,
diff --git a/pkg/server/server.go b/pkg/server/server.go
index e36ff26d..33c892aa 100644
--- a/pkg/server/server.go
+++ b/pkg/server/server.go
@@ -36,23 +36,21 @@ import (
"github.com/osrg/gobgp/pkg/packet/bgp"
)
-type TCPListener struct {
+type tcpListener struct {
l *net.TCPListener
ch chan struct{}
}
-func (l *TCPListener) Close() error {
+func (l *tcpListener) Close() error {
if err := l.l.Close(); err != nil {
return err
}
- select {
- case <-l.ch:
- }
+ <-l.ch
return nil
}
// avoid mapped IPv6 address
-func NewTCPListener(address string, port uint32, ch chan *net.TCPConn) (*TCPListener, error) {
+func newTCPListener(address string, port uint32, ch chan *net.TCPConn) (*tcpListener, error) {
proto := "tcp4"
if ip := net.ParseIP(address); ip == nil {
return nil, fmt.Errorf("can't listen on %s", address)
@@ -70,7 +68,7 @@ func NewTCPListener(address string, port uint32, ch chan *net.TCPConn) (*TCPList
}
// Note: Set TTL=255 for incoming connection listener in order to accept
// connection in case for the neighbor has TTL Security settings.
- if err := SetListenTcpTTLSockopt(l, 255); err != nil {
+ if err := setListenTCPTTLSockopt(l, 255); err != nil {
log.WithFields(log.Fields{
"Topic": "Peer",
"Key": addr,
@@ -92,7 +90,7 @@ func NewTCPListener(address string, port uint32, ch chan *net.TCPConn) (*TCPList
ch <- conn
}
}()
- return &TCPListener{
+ return &tcpListener{
l: l,
ch: closeCh,
}, nil
@@ -106,7 +104,7 @@ type BgpServer struct {
mgmtCh chan *mgmtOp
policy *table.RoutingPolicy
- listeners []*TCPListener
+ listeners []*tcpListener
neighborMap map[string]*Peer
peerGroupMap map[string]*PeerGroup
globalRib *table.TableManager
@@ -184,7 +182,7 @@ func (s *BgpServer) mgmtOperation(f func() error, checkActive bool) (err error)
}
func (server *BgpServer) Serve() {
- server.listeners = make([]*TCPListener, 0, 2)
+ server.listeners = make([]*tcpListener, 0, 2)
server.fsmincomingCh = channels.NewInfiniteChannel()
server.fsmStateCh = make(chan *FsmMsg, 4096)
@@ -1936,7 +1934,7 @@ func (s *BgpServer) StartBgp(ctx context.Context, r *api.StartBgpRequest) error
if c.Config.Port > 0 {
acceptCh := make(chan *net.TCPConn, 4096)
for _, addr := range c.Config.LocalAddressList {
- l, err := NewTCPListener(addr, uint32(c.Config.Port), acceptCh)
+ l, err := newTCPListener(addr, uint32(c.Config.Port), acceptCh)
if err != nil {
return err
}
@@ -2546,7 +2544,7 @@ func (server *BgpServer) addNeighbor(c *config.Neighbor) error {
if server.bgpConfig.Global.Config.Port > 0 {
for _, l := range server.Listeners(addr) {
if c.Config.AuthPassword != "" {
- if err := SetTcpMD5SigSockopt(l, addr, c.Config.AuthPassword); err != nil {
+ if err := setTCPMD5SigSockopt(l, addr, c.Config.AuthPassword); err != nil {
log.WithFields(log.Fields{
"Topic": "Peer",
"Key": addr,
@@ -2644,7 +2642,7 @@ func (server *BgpServer) deleteNeighbor(c *config.Neighbor, code, subcode uint8)
return fmt.Errorf("Can't delete a peer configuration for %s", addr)
}
for _, l := range server.Listeners(addr) {
- if err := SetTcpMD5SigSockopt(l, addr, ""); err != nil {
+ if err := setTCPMD5SigSockopt(l, addr, ""); err != nil {
log.WithFields(log.Fields{
"Topic": "Peer",
"Key": addr,
diff --git a/pkg/server/sockopt.go b/pkg/server/sockopt.go
index e1c9c467..8061f41a 100644
--- a/pkg/server/sockopt.go
+++ b/pkg/server/sockopt.go
@@ -23,49 +23,49 @@ import (
log "github.com/sirupsen/logrus"
)
-func SetTcpMD5SigSockopt(l *net.TCPListener, address string, key string) error {
+func setTCPMD5SigSockopt(l *net.TCPListener, address string, key string) error {
return setTcpMD5SigSockopt(l, address, key)
}
-func SetListenTcpTTLSockopt(l *net.TCPListener, ttl int) error {
+func setListenTCPTTLSockopt(l *net.TCPListener, ttl int) error {
return setListenTcpTTLSockopt(l, ttl)
}
-func SetTcpTTLSockopt(conn *net.TCPConn, ttl int) error {
+func setTCPTTLSockopt(conn *net.TCPConn, ttl int) error {
return setTcpTTLSockopt(conn, ttl)
}
-func SetTcpMinTTLSockopt(conn *net.TCPConn, ttl int) error {
+func setTCPMinTTLSockopt(conn *net.TCPConn, ttl int) error {
return setTcpMinTTLSockopt(conn, ttl)
}
-type TCPDialer struct {
+type tcpDialer struct {
net.Dialer
// MD5 authentication password.
AuthPassword string
// The TTL value to set outgoing connection.
- Ttl uint8
+ TTL uint8
// The minimum TTL value for incoming packets.
- TtlMin uint8
+ TTLMin uint8
}
-func (d *TCPDialer) DialTCP(addr string, port int) (*net.TCPConn, error) {
+func (d *tcpDialer) DialTCP(addr string, port int) (*net.TCPConn, error) {
if d.AuthPassword != "" {
log.WithFields(log.Fields{
"Topic": "Peer",
"Key": addr,
}).Warn("setting md5 for active connection is not supported")
}
- if d.Ttl != 0 {
+ if d.TTL != 0 {
log.WithFields(log.Fields{
"Topic": "Peer",
"Key": addr,
}).Warn("setting ttl for active connection is not supported")
}
- if d.TtlMin != 0 {
+ if d.TTLMin != 0 {
log.WithFields(log.Fields{
"Topic": "Peer",
"Key": addr,
diff --git a/pkg/server/sockopt_bsd.go b/pkg/server/sockopt_bsd.go
index 488a203e..fe7a6134 100644
--- a/pkg/server/sockopt_bsd.go
+++ b/pkg/server/sockopt_bsd.go
@@ -22,8 +22,8 @@ import (
)
const (
- TCP_MD5SIG = 0x10 // TCP MD5 Signature (RFC2385)
- IPV6_MINHOPCOUNT = 73 // Generalized TTL Security Mechanism (RFC5082)
+ tcpMD5SIG = 0x10 // TCP MD5 Signature (RFC2385)
+ ipv6MinHopCount = 73 // Generalized TTL Security Mechanism (RFC5082)
)
func setTcpMD5SigSockopt(l *net.TCPListener, address string, key string) error {
@@ -32,7 +32,7 @@ func setTcpMD5SigSockopt(l *net.TCPListener, address string, key string) error {
return err
}
// always enable and assumes that the configuration is done by setkey()
- return setsockOptInt(sc, syscall.IPPROTO_TCP, TCP_MD5SIG, 1)
+ return setsockOptInt(sc, syscall.IPPROTO_TCP, tcpMD5SIG, 1)
}
func setListenTcpTTLSockopt(l *net.TCPListener, ttl int) error {
@@ -63,7 +63,7 @@ func setTcpMinTTLSockopt(conn *net.TCPConn, ttl int) error {
name := syscall.IP_MINTTL
if family == syscall.AF_INET6 {
level = syscall.IPPROTO_IPV6
- name = IPV6_MINHOPCOUNT
+ name = ipv6MinHopCount
}
return setsockOptInt(sc, level, name, ttl)
}
diff --git a/pkg/server/sockopt_linux.go b/pkg/server/sockopt_linux.go
index 152e97de..ac2ecdb2 100644
--- a/pkg/server/sockopt_linux.go
+++ b/pkg/server/sockopt_linux.go
@@ -25,8 +25,8 @@ import (
)
const (
- TCP_MD5SIG = 14 // TCP MD5 Signature (RFC2385)
- IPV6_MINHOPCOUNT = 73 // Generalized TTL Security Mechanism (RFC5082)
+ tcpMD5SIG = 14 // TCP MD5 Signature (RFC2385)
+ ipv6MinHopCount = 73 // Generalized TTL Security Mechanism (RFC5082)
)
type tcpmd5sig struct {
@@ -57,7 +57,7 @@ func buildTcpMD5Sig(address string, key string) (tcpmd5sig, error) {
return t, nil
}
-func SetTcpMD5SigSockopt(l *net.TCPListener, address string, key string) error {
+func setTCPMD5SigSockopt(l *net.TCPListener, address string, key string) error {
t, err := buildTcpMD5Sig(address, key)
if err != nil {
return err
@@ -68,10 +68,10 @@ func SetTcpMD5SigSockopt(l *net.TCPListener, address string, key string) error {
if err != nil {
return err
}
- return setsockOptString(sc, syscall.IPPROTO_TCP, TCP_MD5SIG, string(b[:]))
+ return setsockOptString(sc, syscall.IPPROTO_TCP, tcpMD5SIG, string(b[:]))
}
-func SetListenTcpTTLSockopt(l *net.TCPListener, ttl int) error {
+func setListenTCPTTLSockopt(l *net.TCPListener, ttl int) error {
family := extractFamilyFromTCPListener(l)
sc, err := l.SyscallConn()
if err != nil {
@@ -80,7 +80,7 @@ func SetListenTcpTTLSockopt(l *net.TCPListener, ttl int) error {
return setsockoptIpTtl(sc, family, ttl)
}
-func SetTcpTTLSockopt(conn *net.TCPConn, ttl int) error {
+func setTCPTTLSockopt(conn *net.TCPConn, ttl int) error {
family := extractFamilyFromTCPConn(conn)
sc, err := conn.SyscallConn()
if err != nil {
@@ -89,7 +89,7 @@ func SetTcpTTLSockopt(conn *net.TCPConn, ttl int) error {
return setsockoptIpTtl(sc, family, ttl)
}
-func SetTcpMinTTLSockopt(conn *net.TCPConn, ttl int) error {
+func setTCPMinTTLSockopt(conn *net.TCPConn, ttl int) error {
family := extractFamilyFromTCPConn(conn)
sc, err := conn.SyscallConn()
if err != nil {
@@ -99,7 +99,7 @@ func SetTcpMinTTLSockopt(conn *net.TCPConn, ttl int) error {
name := syscall.IP_MINTTL
if family == syscall.AF_INET6 {
level = syscall.IPPROTO_IPV6
- name = IPV6_MINHOPCOUNT
+ name = ipv6MinHopCount
}
return setsockOptInt(sc, level, name, ttl)
}
@@ -110,7 +110,7 @@ func setsockoptTcpMD5Sig(fd int, address string, key string) error {
return err
}
b := *(*[unsafe.Sizeof(t)]byte)(unsafe.Pointer(&t))
- return os.NewSyscallError("setsockopt", syscall.SetsockoptString(fd, syscall.IPPROTO_TCP, TCP_MD5SIG, string(b[:])))
+ return os.NewSyscallError("setsockopt", syscall.SetsockoptString(fd, syscall.IPPROTO_TCP, tcpMD5SIG, string(b[:])))
}
func setsockoptIpTtl2(fd int, family int, value int) error {
@@ -128,25 +128,25 @@ func setsockoptIpMinTtl(fd int, family int, value int) error {
name := syscall.IP_MINTTL
if family == syscall.AF_INET6 {
level = syscall.IPPROTO_IPV6
- name = IPV6_MINHOPCOUNT
+ name = ipv6MinHopCount
}
return os.NewSyscallError("setsockopt", syscall.SetsockoptInt(fd, level, name, value))
}
-type TCPDialer struct {
+type tcpDialer struct {
net.Dialer
// MD5 authentication password.
AuthPassword string
// The TTL value to set outgoing connection.
- Ttl uint8
+ TTL uint8
// The minimum TTL value for incoming packets.
- TtlMin uint8
+ TTLMin uint8
}
-func (d *TCPDialer) DialTCP(addr string, port int) (*net.TCPConn, error) {
+func (d *tcpDialer) DialTCP(addr string, port int) (*net.TCPConn, error) {
var family int
var ra, la syscall.Sockaddr
@@ -214,14 +214,14 @@ func (d *TCPDialer) DialTCP(addr string, port int) (*net.TCPConn, error) {
}
}
- if d.Ttl != 0 {
- if err = setsockoptIpTtl2(fd, family, int(d.Ttl)); err != nil {
+ if d.TTL != 0 {
+ if err = setsockoptIpTtl2(fd, family, int(d.TTL)); err != nil {
return nil, err
}
}
- if d.TtlMin != 0 {
- if err = setsockoptIpMinTtl(fd, family, int(d.Ttl)); err != nil {
+ if d.TTLMin != 0 {
+ if err = setsockoptIpMinTtl(fd, family, int(d.TTL)); err != nil {
return nil, err
}
}
diff --git a/pkg/server/sockopt_linux_test.go b/pkg/server/sockopt_linux_test.go
index a08e7fc7..ca72a98f 100644
--- a/pkg/server/sockopt_linux_test.go
+++ b/pkg/server/sockopt_linux_test.go
@@ -88,7 +88,7 @@ func Test_DialTCP_FDleak(t *testing.T) {
for i := 0; i < 10; i++ {
laddr, _ := net.ResolveTCPAddr("tcp", net.JoinHostPort("127.0.0.1", "0"))
- d := TCPDialer{
+ d := tcpDialer{
Dialer: net.Dialer{
LocalAddr: laddr,
Timeout: 1 * time.Second,
diff --git a/pkg/server/sockopt_openbsd.go b/pkg/server/sockopt_openbsd.go
index 4b7dc816..dcee33a2 100644
--- a/pkg/server/sockopt_openbsd.go
+++ b/pkg/server/sockopt_openbsd.go
@@ -348,12 +348,12 @@ func saDelete(address string) error {
}
const (
- TCP_MD5SIG = 0x4 // TCP MD5 Signature (RFC2385)
- IPV6_MINHOPCOUNT = 73 // Generalized TTL Security Mechanism (RFC5082)
+ tcpMD5SIG = 0x4 // TCP MD5 Signature (RFC2385)
+ ipv6MinHopCount = 73 // Generalized TTL Security Mechanism (RFC5082)
)
func setsockoptTcpMD5Sig(sc syscall.RawConn, address string, key string) error {
- if err := setsockOptInt(sc, syscall.IPPROTO_TCP, TCP_MD5SIG, 1); err != nil {
+ if err := setsockOptInt(sc, syscall.IPPROTO_TCP, tcpMD5SIG, 1); err != nil {
return err
}
if len(key) > 0 {
@@ -362,7 +362,7 @@ func setsockoptTcpMD5Sig(sc syscall.RawConn, address string, key string) error {
return saDelete(address)
}
-func SetTcpMD5SigSockopt(l *net.TCPListener, address string, key string) error {
+func setTCPMD5SigSockopt(l *net.TCPListener, address string, key string) error {
sc, err := l.SyscallConn()
if err != nil {
return err
@@ -370,7 +370,7 @@ func SetTcpMD5SigSockopt(l *net.TCPListener, address string, key string) error {
return setsockoptTcpMD5Sig(sc, address, key)
}
-func SetListenTcpTTLSockopt(l *net.TCPListener, ttl int) error {
+func setListenTCPTTLSockopt(l *net.TCPListener, ttl int) error {
family := extractFamilyFromTCPListener(l)
sc, err := l.SyscallConn()
if err != nil {
@@ -379,7 +379,7 @@ func SetListenTcpTTLSockopt(l *net.TCPListener, ttl int) error {
return setsockoptIpTtl(sc, family, ttl)
}
-func SetTcpTTLSockopt(conn *net.TCPConn, ttl int) error {
+func setTCPTTLSockopt(conn *net.TCPConn, ttl int) error {
family := extractFamilyFromTCPConn(conn)
sc, err := conn.SyscallConn()
if err != nil {
@@ -388,7 +388,7 @@ func SetTcpTTLSockopt(conn *net.TCPConn, ttl int) error {
return setsockoptIpTtl(sc, family, ttl)
}
-func SetTcpMinTTLSockopt(conn *net.TCPConn, ttl int) error {
+func setTCPMinTTLSockopt(conn *net.TCPConn, ttl int) error {
family := extractFamilyFromTCPConn(conn)
sc, err := conn.SyscallConn()
if err != nil {
@@ -398,38 +398,38 @@ func SetTcpMinTTLSockopt(conn *net.TCPConn, ttl int) error {
name := syscall.IP_MINTTL
if family == syscall.AF_INET6 {
level = syscall.IPPROTO_IPV6
- name = IPV6_MINHOPCOUNT
+ name = ipv6MinHopCount
}
return setsockOptInt(sc, level, name, ttl)
}
-type TCPDialer struct {
+type tcpDialer struct {
net.Dialer
// MD5 authentication password.
AuthPassword string
// The TTL value to set outgoing connection.
- Ttl uint8
+ TTL uint8
// The minimum TTL value for incoming packets.
- TtlMin uint8
+ TTLMin uint8
}
-func (d *TCPDialer) DialTCP(addr string, port int) (*net.TCPConn, error) {
+func (d *tcpDialer) DialTCP(addr string, port int) (*net.TCPConn, error) {
if d.AuthPassword != "" {
log.WithFields(log.Fields{
"Topic": "Peer",
"Key": addr,
}).Warn("setting md5 for active connection is not supported")
}
- if d.Ttl != 0 {
+ if d.TTL != 0 {
log.WithFields(log.Fields{
"Topic": "Peer",
"Key": addr,
}).Warn("setting ttl for active connection is not supported")
}
- if d.TtlMin != 0 {
+ if d.TTLMin != 0 {
log.WithFields(log.Fields{
"Topic": "Peer",
"Key": addr,