diff options
Diffstat (limited to 'packet/bgp/bgp_test.go')
-rw-r--r-- | packet/bgp/bgp_test.go | 147 |
1 files changed, 16 insertions, 131 deletions
diff --git a/packet/bgp/bgp_test.go b/packet/bgp/bgp_test.go index 29aa4e69..612e8c7b 100644 --- a/packet/bgp/bgp_test.go +++ b/packet/bgp/bgp_test.go @@ -1,3 +1,18 @@ +// Copyright (C) 2016 Nippon Telegraph and Telephone Corporation. +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +// implied. +// See the License for the specific language governing permissions and +// limitations under the License. + package bgp import ( @@ -22,138 +37,8 @@ func refresh() *BGPMessage { return NewBGPRouteRefreshMessage(1, 2, 10) } -func open() *BGPMessage { - p1 := NewOptionParameterCapability( - []ParameterCapabilityInterface{NewCapRouteRefresh()}) - p2 := NewOptionParameterCapability( - []ParameterCapabilityInterface{NewCapMultiProtocol(RF_IPv4_UC)}) - g := &CapGracefulRestartTuple{4, 2, 3} - p3 := NewOptionParameterCapability( - []ParameterCapabilityInterface{NewCapGracefulRestart(false, 100, - []*CapGracefulRestartTuple{g})}) - p4 := NewOptionParameterCapability( - []ParameterCapabilityInterface{NewCapFourOctetASNumber(100000)}) - p5 := NewOptionParameterCapability( - []ParameterCapabilityInterface{NewCapAddPath(RF_IPv4_UC, BGP_ADD_PATH_BOTH)}) - return NewBGPOpenMessage(11033, 303, "100.4.10.3", - []OptionParameterInterface{p1, p2, p3, p4, p5}) -} - -func update() *BGPMessage { - w1 := NewIPAddrPrefix(23, "121.1.3.2") - w2 := NewIPAddrPrefix(17, "100.33.3.0") - w := []*IPAddrPrefix{w1, w2} - - aspath1 := []AsPathParamInterface{ - NewAsPathParam(2, []uint16{1000}), - NewAsPathParam(1, []uint16{1001, 1002}), - NewAsPathParam(2, []uint16{1003, 1004}), - } - - aspath2 := []AsPathParamInterface{ - NewAs4PathParam(2, []uint32{1000000}), - NewAs4PathParam(1, []uint32{1000001, 1002}), - NewAs4PathParam(2, []uint32{1003, 100004}), - } - - aspath3 := []*As4PathParam{ - NewAs4PathParam(2, []uint32{1000000}), - NewAs4PathParam(1, []uint32{1000001, 1002}), - NewAs4PathParam(2, []uint32{1003, 100004}), - } - - isTransitive := true - - ecommunities := []ExtendedCommunityInterface{ - NewTwoOctetAsSpecificExtended(EC_SUBTYPE_ROUTE_TARGET, 10003, 3<<20, isTransitive), - NewFourOctetAsSpecificExtended(EC_SUBTYPE_ROUTE_TARGET, 1<<20, 300, isTransitive), - NewIPv4AddressSpecificExtended(EC_SUBTYPE_ROUTE_TARGET, "192.2.1.2", 3000, isTransitive), - &OpaqueExtended{ - Value: &DefaultOpaqueExtendedValue{[]byte{255, 1, 2, 3, 4, 5, 6, 7}}, - }, - &OpaqueExtended{ - Value: &ValidationExtended{Value: VALIDATION_STATE_INVALID}, - }, - &UnknownExtended{Type: 99, Value: []byte{0, 1, 2, 3, 4, 5, 6, 7}}, - NewESILabelExtended(1000, true), - NewESImportRouteTarget("11:22:33:44:55:66"), - NewMacMobilityExtended(123, false), - } - - mp_nlri := []AddrPrefixInterface{ - NewLabeledVPNIPAddrPrefix(20, "192.0.9.0", *NewMPLSLabelStack(1, 2, 3), - NewRouteDistinguisherTwoOctetAS(256, 10000)), - NewLabeledVPNIPAddrPrefix(26, "192.10.8.192", *NewMPLSLabelStack(5, 6, 7, 8), - NewRouteDistinguisherIPAddressAS("10.0.1.1", 10001)), - } - - mp_nlri2 := []AddrPrefixInterface{NewIPv6AddrPrefix(100, - "fe80:1234:1234:5667:8967:af12:8912:1023")} - - mp_nlri3 := []AddrPrefixInterface{NewLabeledVPNIPv6AddrPrefix(100, - "fe80:1234:1234:5667:8967:af12:1203:33a1", *NewMPLSLabelStack(5, 6), - NewRouteDistinguisherFourOctetAS(5, 6))} - - mp_nlri4 := []AddrPrefixInterface{NewLabeledIPAddrPrefix(25, "192.168.0.0", - *NewMPLSLabelStack(5, 6, 7))} - - mac, _ := net.ParseMAC("01:23:45:67:89:ab") - mp_nlri5 := []AddrPrefixInterface{ - NewEVPNNLRI(EVPN_ROUTE_TYPE_ETHERNET_AUTO_DISCOVERY, 0, - &EVPNEthernetAutoDiscoveryRoute{NewRouteDistinguisherFourOctetAS(5, 6), - EthernetSegmentIdentifier{ESI_ARBITRARY, make([]byte, 9)}, 2, 2}), - NewEVPNNLRI(EVPN_ROUTE_TYPE_MAC_IP_ADVERTISEMENT, 0, - &EVPNMacIPAdvertisementRoute{NewRouteDistinguisherFourOctetAS(5, 6), - EthernetSegmentIdentifier{ESI_ARBITRARY, make([]byte, 9)}, 3, 48, - mac, 32, net.ParseIP("192.2.1.2"), - []uint32{3, 4}}), - NewEVPNNLRI(EVPN_INCLUSIVE_MULTICAST_ETHERNET_TAG, 0, - &EVPNMulticastEthernetTagRoute{NewRouteDistinguisherFourOctetAS(5, 6), 3, 32, net.ParseIP("192.2.1.2")}), - NewEVPNNLRI(EVPN_ETHERNET_SEGMENT_ROUTE, 0, - &EVPNEthernetSegmentRoute{NewRouteDistinguisherFourOctetAS(5, 6), - EthernetSegmentIdentifier{ESI_ARBITRARY, make([]byte, 9)}, - 32, net.ParseIP("192.2.1.1")}), - } - - p := []PathAttributeInterface{ - NewPathAttributeOrigin(3), - NewPathAttributeAsPath(aspath1), - NewPathAttributeAsPath(aspath2), - NewPathAttributeNextHop("129.1.1.2"), - NewPathAttributeMultiExitDisc(1 << 20), - NewPathAttributeLocalPref(1 << 22), - NewPathAttributeAtomicAggregate(), - NewPathAttributeAggregator(uint16(30002), "129.0.2.99"), - NewPathAttributeAggregator(uint32(30002), "129.0.2.99"), - NewPathAttributeAggregator(uint32(300020), "129.0.2.99"), - NewPathAttributeCommunities([]uint32{1, 3}), - NewPathAttributeOriginatorId("10.10.0.1"), - NewPathAttributeClusterList([]string{"10.10.0.2", "10.10.0.3"}), - NewPathAttributeExtendedCommunities(ecommunities), - NewPathAttributeAs4Path(aspath3), - NewPathAttributeAs4Aggregator(10000, "112.22.2.1"), - NewPathAttributeMpReachNLRI("112.22.2.0", mp_nlri), - NewPathAttributeMpReachNLRI("1023::", mp_nlri2), - NewPathAttributeMpReachNLRI("fe80::", mp_nlri3), - NewPathAttributeMpReachNLRI("129.1.1.1", mp_nlri4), - NewPathAttributeMpReachNLRI("129.1.1.1", mp_nlri5), - NewPathAttributeMpUnreachNLRI(mp_nlri), - //NewPathAttributeMpReachNLRI("112.22.2.0", []AddrPrefixInterface{}), - //NewPathAttributeMpUnreachNLRI([]AddrPrefixInterface{}), - &PathAttributeUnknown{ - PathAttribute: PathAttribute{ - Flags: BGP_ATTR_FLAG_TRANSITIVE, - Type: 100, - Value: []byte{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}, - }, - }, - } - n := []*IPAddrPrefix{NewIPAddrPrefix(24, "13.2.3.1")} - return NewBGPUpdateMessage(w, p, n) -} - func Test_Message(t *testing.T) { - l := []*BGPMessage{keepalive(), notification(), refresh(), open(), update()} + l := []*BGPMessage{keepalive(), notification(), refresh(), NewTestBGPOpenMessage(), NewTestBGPUpdateMessage()} for _, m1 := range l { buf1, _ := m1.Serialize() t.Log("LEN =", len(buf1)) |