mirror of
https://github.com/osrg/gobgp.git
synced 2024-05-11 05:55:10 +00:00
mrt: change NewHoge() API to take ip addresss as string
Consistent with bgp packet package. Signed-off-by: FUJITA Tomonori <[email protected]>
This commit is contained in:
+26
-18
@@ -225,18 +225,20 @@ func (p *Peer) Serialize() ([]byte, error) {
|
||||
return append(buf, bbuf...), nil
|
||||
}
|
||||
|
||||
func NewPeer(bgpid net.IP, ipaddr net.IP, asn uint32, isAS4 bool) *Peer {
|
||||
func NewPeer(bgpid string, ipaddr string, asn uint32, isAS4 bool) *Peer {
|
||||
t := 0
|
||||
if ipaddr.To4() == nil {
|
||||
addr := net.ParseIP(ipaddr).To4()
|
||||
if addr == nil {
|
||||
t |= 1
|
||||
addr = net.ParseIP(ipaddr).To16()
|
||||
}
|
||||
if isAS4 {
|
||||
t |= (1 << 1)
|
||||
}
|
||||
return &Peer{
|
||||
Type: uint8(t),
|
||||
BgpId: bgpid,
|
||||
IpAddress: ipaddr,
|
||||
BgpId: net.ParseIP(bgpid).To4(),
|
||||
IpAddress: addr,
|
||||
AS: asn,
|
||||
}
|
||||
}
|
||||
@@ -300,9 +302,9 @@ func (t *PeerIndexTable) Serialize() ([]byte, error) {
|
||||
return buf, nil
|
||||
}
|
||||
|
||||
func NewPeerIndexTable(bgpid net.IP, viewname string, peers []*Peer) *PeerIndexTable {
|
||||
func NewPeerIndexTable(bgpid string, viewname string, peers []*Peer) *PeerIndexTable {
|
||||
return &PeerIndexTable{
|
||||
CollectorBgpId: bgpid,
|
||||
CollectorBgpId: net.ParseIP(bgpid).To4(),
|
||||
ViewName: viewname,
|
||||
Peers: peers,
|
||||
}
|
||||
@@ -491,8 +493,8 @@ func (m *BGP4MPHeader) decodeFromBytes(data []byte) ([]byte, error) {
|
||||
m.AddressFamily = binary.BigEndian.Uint16(data[2:4])
|
||||
switch m.AddressFamily {
|
||||
case bgp.AFI_IP:
|
||||
m.PeerIpAddress = net.IP(data[4:8])
|
||||
m.LocalIpAddress = net.IP(data[8:12])
|
||||
m.PeerIpAddress = net.IP(data[4:8]).To4()
|
||||
m.LocalIpAddress = net.IP(data[8:12]).To4()
|
||||
data = data[12:]
|
||||
case bgp.AFI_IP6:
|
||||
m.PeerIpAddress = net.IP(data[4:20])
|
||||
@@ -531,22 +533,28 @@ func (m *BGP4MPHeader) serialize() ([]byte, error) {
|
||||
return append(buf, bbuf...), nil
|
||||
}
|
||||
|
||||
func newBGP4MPHeader(peeras, localas uint32, intfindex uint16, peerip, localip net.IP, isAS4 bool) (*BGP4MPHeader, error) {
|
||||
func newBGP4MPHeader(peeras, localas uint32, intfindex uint16, peerip, localip string, isAS4 bool) (*BGP4MPHeader, error) {
|
||||
var af uint16
|
||||
if peerip.To4() != nil && localip.To4() != nil {
|
||||
paddr := net.ParseIP(peerip).To4()
|
||||
laddr := net.ParseIP(localip).To4()
|
||||
if paddr != nil && laddr != nil {
|
||||
af = bgp.AFI_IP
|
||||
} else if peerip.To16() != nil && localip.To16() != nil {
|
||||
af = bgp.AFI_IP6
|
||||
} else {
|
||||
return nil, fmt.Errorf("Peer IP Address and Local IP Address must have the same address family")
|
||||
paddr = net.ParseIP(peerip).To16()
|
||||
laddr = net.ParseIP(localip).To16()
|
||||
if paddr != nil && laddr != nil {
|
||||
af = bgp.AFI_IP6
|
||||
} else {
|
||||
return nil, fmt.Errorf("Peer IP Address and Local IP Address must have the same address family")
|
||||
}
|
||||
}
|
||||
return &BGP4MPHeader{
|
||||
PeerAS: peeras,
|
||||
LocalAS: localas,
|
||||
InterfaceIndex: intfindex,
|
||||
AddressFamily: af,
|
||||
PeerIpAddress: peerip,
|
||||
LocalIpAddress: localip,
|
||||
PeerIpAddress: paddr,
|
||||
LocalIpAddress: laddr,
|
||||
isAS4: isAS4,
|
||||
}, nil
|
||||
}
|
||||
@@ -582,7 +590,7 @@ func (m *BGP4MPStateChange) Serialize() ([]byte, error) {
|
||||
return append(buf, bbuf...), nil
|
||||
}
|
||||
|
||||
func NewBGP4MPStateChange(peeras, localas uint32, intfindex uint16, peerip, localip net.IP, isAS4 bool, oldstate, newstate BGPState) *BGP4MPStateChange {
|
||||
func NewBGP4MPStateChange(peeras, localas uint32, intfindex uint16, peerip, localip string, isAS4 bool, oldstate, newstate BGPState) *BGP4MPStateChange {
|
||||
header, _ := newBGP4MPHeader(peeras, localas, intfindex, peerip, localip, isAS4)
|
||||
return &BGP4MPStateChange{
|
||||
BGP4MPHeader: header,
|
||||
@@ -627,7 +635,7 @@ func (m *BGP4MPMessage) Serialize() ([]byte, error) {
|
||||
return append(buf, bbuf...), nil
|
||||
}
|
||||
|
||||
func NewBGP4MPMessage(peeras, localas uint32, intfindex uint16, peerip, localip net.IP, isAS4 bool, msg *bgp.BGPMessage) *BGP4MPMessage {
|
||||
func NewBGP4MPMessage(peeras, localas uint32, intfindex uint16, peerip, localip string, isAS4 bool, msg *bgp.BGPMessage) *BGP4MPMessage {
|
||||
header, _ := newBGP4MPHeader(peeras, localas, intfindex, peerip, localip, isAS4)
|
||||
return &BGP4MPMessage{
|
||||
BGP4MPHeader: header,
|
||||
@@ -635,7 +643,7 @@ func NewBGP4MPMessage(peeras, localas uint32, intfindex uint16, peerip, localip
|
||||
}
|
||||
}
|
||||
|
||||
func NewBGP4MPMessageLocal(peeras, localas uint32, intfindex uint16, peerip, localip net.IP, isAS4 bool, msg *bgp.BGPMessage) *BGP4MPMessage {
|
||||
func NewBGP4MPMessageLocal(peeras, localas uint32, intfindex uint16, peerip, localip string, isAS4 bool, msg *bgp.BGPMessage) *BGP4MPMessage {
|
||||
header, _ := newBGP4MPHeader(peeras, localas, intfindex, peerip, localip, isAS4)
|
||||
return &BGP4MPMessage{
|
||||
BGP4MPHeader: header,
|
||||
|
||||
@@ -49,25 +49,25 @@ func testPeer(t *testing.T, p1 *Peer) {
|
||||
}
|
||||
|
||||
func TestMrtPeer(t *testing.T) {
|
||||
p := NewPeer(net.ParseIP("192.168.0.1"), net.ParseIP("10.0.0.1"), 65000, false)
|
||||
p := NewPeer("192.168.0.1", "10.0.0.1", 65000, false)
|
||||
testPeer(t, p)
|
||||
}
|
||||
|
||||
func TestMrtPeerv6(t *testing.T) {
|
||||
p := NewPeer(net.ParseIP("192.168.0.1"), net.ParseIP("2001::1"), 65000, false)
|
||||
p := NewPeer("192.168.0.1", "2001::1", 65000, false)
|
||||
testPeer(t, p)
|
||||
}
|
||||
|
||||
func TestMrtPeerAS4(t *testing.T) {
|
||||
p := NewPeer(net.ParseIP("192.168.0.1"), net.ParseIP("2001::1"), 135500, true)
|
||||
p := NewPeer("192.168.0.1", "2001::1", 135500, true)
|
||||
testPeer(t, p)
|
||||
}
|
||||
|
||||
func TestMrtPeerIndexTable(t *testing.T) {
|
||||
p1 := NewPeer(net.ParseIP("192.168.0.1"), net.ParseIP("10.0.0.1"), 65000, false)
|
||||
p2 := NewPeer(net.ParseIP("192.168.0.1"), net.ParseIP("2001::1"), 65000, false)
|
||||
p3 := NewPeer(net.ParseIP("192.168.0.1"), net.ParseIP("2001::1"), 135500, true)
|
||||
pt1 := NewPeerIndexTable(net.ParseIP("192.168.0.1"), "test", []*Peer{p1, p2, p3})
|
||||
p1 := NewPeer("192.168.0.1", "10.0.0.1", 65000, false)
|
||||
p2 := NewPeer("192.168.0.1", "2001::1", 65000, false)
|
||||
p3 := NewPeer("192.168.0.1", "2001::1", 135500, true)
|
||||
pt1 := NewPeerIndexTable("192.168.0.1", "test", []*Peer{p1, p2, p3})
|
||||
b1, err := pt1.Serialize()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
|
||||
Reference in New Issue
Block a user