Committed by
Gerrit Code Review
BGP system test issue fix
Change-Id: I36064e33146444531cdef6deab0d55b89efae8a7
Showing
3 changed files
with
28 additions
and
22 deletions
... | @@ -376,24 +376,10 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler { | ... | @@ -376,24 +376,10 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler { |
376 | throw new IOException("Invalid peer connection."); | 376 | throw new IOException("Invalid peer connection."); |
377 | } | 377 | } |
378 | 378 | ||
379 | - // Connection should establish only if local ip and Autonomous system number is configured. | ||
380 | - if (bgpconfig.getState() != BgpCfg.State.IP_AS_CONFIGURED) { | ||
381 | - sendNotification(BgpErrorType.CEASE, BgpErrorType.CONNECTION_REJECTED, null); | ||
382 | - channel.close(); | ||
383 | - log.info("BGP local AS and router ID not configured"); | ||
384 | - return; | ||
385 | - } | ||
386 | 379 | ||
387 | inetAddress = (InetSocketAddress) address; | 380 | inetAddress = (InetSocketAddress) address; |
388 | peerAddr = IpAddress.valueOf(inetAddress.getAddress()).toString(); | 381 | peerAddr = IpAddress.valueOf(inetAddress.getAddress()).toString(); |
389 | 382 | ||
390 | - // if peer is not configured disconnect session | ||
391 | - if (!bgpconfig.isPeerConfigured(peerAddr)) { | ||
392 | - log.debug("Peer is not configured {}", peerAddr); | ||
393 | - sendNotification(BgpErrorType.CEASE, BgpErrorType.CONNECTION_REJECTED, null); | ||
394 | - channel.close(); | ||
395 | - return; | ||
396 | - } | ||
397 | 383 | ||
398 | // if connection is already established close channel | 384 | // if connection is already established close channel |
399 | if (peerManager.isPeerConnected(BgpId.bgpId(IpAddress.valueOf(peerAddr)))) { | 385 | if (peerManager.isPeerConnected(BgpId.bgpId(IpAddress.valueOf(peerAddr)))) { |
... | @@ -662,8 +648,10 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler { | ... | @@ -662,8 +648,10 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler { |
662 | private void sendHandshakeOpenMessage() throws IOException, BgpParseException { | 648 | private void sendHandshakeOpenMessage() throws IOException, BgpParseException { |
663 | int bgpId; | 649 | int bgpId; |
664 | 650 | ||
665 | - bgpId = Ip4Address.valueOf(bgpconfig.getRouterId()).toInt(); | 651 | + InetSocketAddress localAddress = (InetSocketAddress) channel.getLocalAddress(); |
666 | - BgpMessage msg = factory4.openMessageBuilder().setAsNumber((short) bgpconfig.getAsNumber()) | 652 | + |
653 | + bgpId = Ip4Address.valueOf(IpAddress.valueOf(localAddress.getAddress()).toString()).toInt(); | ||
654 | + BgpMessage msg = factory4.openMessageBuilder().setAsNumber((short) peerAsNum) | ||
667 | .setHoldTime(bgpconfig.getHoldTime()).setBgpId(bgpId).setLsCapabilityTlv(bgpconfig.getLsCapability()) | 655 | .setHoldTime(bgpconfig.getHoldTime()).setBgpId(bgpId).setLsCapabilityTlv(bgpconfig.getLsCapability()) |
668 | .setLargeAsCapabilityTlv(bgpconfig.getLargeASCapability()).build(); | 656 | .setLargeAsCapabilityTlv(bgpconfig.getLargeASCapability()).build(); |
669 | log.debug("Sending open message to {}", channel.getRemoteAddress()); | 657 | log.debug("Sending open message to {}", channel.getRemoteAddress()); |
... | @@ -734,11 +722,6 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler { | ... | @@ -734,11 +722,6 @@ class BgpChannelHandler extends IdleStateAwareChannelHandler { |
734 | throw new BgpParseException(BgpErrorType.OPEN_MESSAGE_ERROR, BgpErrorType.BAD_BGP_IDENTIFIER, null); | 722 | throw new BgpParseException(BgpErrorType.OPEN_MESSAGE_ERROR, BgpErrorType.BAD_BGP_IDENTIFIER, null); |
735 | } | 723 | } |
736 | 724 | ||
737 | - // Validate AS number | ||
738 | - result = asNumberValidation(h, openMsg); | ||
739 | - if (!result) { | ||
740 | - throw new BgpParseException(BgpErrorType.OPEN_MESSAGE_ERROR, BgpErrorType.BAD_PEER_AS, null); | ||
741 | - } | ||
742 | 725 | ||
743 | // Validate hold timer | 726 | // Validate hold timer |
744 | if ((openMsg.getHoldTime() != 0) && (openMsg.getHoldTime() < BGP_MIN_HOLDTIME)) { | 727 | if ((openMsg.getHoldTime() != 0) && (openMsg.getHoldTime() < BGP_MIN_HOLDTIME)) { | ... | ... |
... | @@ -67,6 +67,7 @@ public class BgpConfig implements BgpCfg { | ... | @@ -67,6 +67,7 @@ public class BgpConfig implements BgpCfg { |
67 | this.holdTime = DEFAULT_HOLD_TIMER; | 67 | this.holdTime = DEFAULT_HOLD_TIMER; |
68 | this.maxConnRetryTime = DEFAULT_CONN_RETRY_TIME; | 68 | this.maxConnRetryTime = DEFAULT_CONN_RETRY_TIME; |
69 | this.maxConnRetryCount = DEFAULT_CONN_RETRY_COUNT; | 69 | this.maxConnRetryCount = DEFAULT_CONN_RETRY_COUNT; |
70 | + this.lsCapability = true; | ||
70 | } | 71 | } |
71 | 72 | ||
72 | @Override | 73 | @Override | ... | ... |
... | @@ -110,9 +110,15 @@ public class BgpControllerImplTest { | ... | @@ -110,9 +110,15 @@ public class BgpControllerImplTest { |
110 | 110 | ||
111 | @Test | 111 | @Test |
112 | public void bgpOpenMessageTest1() throws InterruptedException { | 112 | public void bgpOpenMessageTest1() throws InterruptedException { |
113 | + short afi = 16388; | ||
114 | + byte res = 0; | ||
115 | + byte safi = 71; | ||
113 | peer1.peerChannelHandler.asNumber = 200; | 116 | peer1.peerChannelHandler.asNumber = 200; |
114 | peer1.peerChannelHandler.version = 4; | 117 | peer1.peerChannelHandler.version = 4; |
115 | peer1.peerChannelHandler.holdTime = 120; | 118 | peer1.peerChannelHandler.holdTime = 120; |
119 | + bgpControllerImpl.getConfig().setLsCapability(true); | ||
120 | + BgpValueType tempTlv1 = new MultiProtocolExtnCapabilityTlv(afi, res, safi); | ||
121 | + peer1.peerChannelHandler.capabilityTlv.add(tempTlv1); | ||
116 | peer1.connect(connectToSocket); | 122 | peer1.connect(connectToSocket); |
117 | boolean result; | 123 | boolean result; |
118 | result = peer1.peerFrameDecoder.receivedOpenMessageLatch.await( | 124 | result = peer1.peerFrameDecoder.receivedOpenMessageLatch.await( |
... | @@ -128,16 +134,26 @@ public class BgpControllerImplTest { | ... | @@ -128,16 +134,26 @@ public class BgpControllerImplTest { |
128 | @Test | 134 | @Test |
129 | public void bgpOpenMessageTest2() throws InterruptedException { | 135 | public void bgpOpenMessageTest2() throws InterruptedException { |
130 | // Open message with as number which is not configured at peer | 136 | // Open message with as number which is not configured at peer |
137 | + short afi = 16388; | ||
138 | + byte res = 0; | ||
139 | + byte safi = 71; | ||
131 | peer1.peerChannelHandler.asNumber = 500; | 140 | peer1.peerChannelHandler.asNumber = 500; |
132 | peer1.peerChannelHandler.version = 4; | 141 | peer1.peerChannelHandler.version = 4; |
133 | peer1.peerChannelHandler.holdTime = 120; | 142 | peer1.peerChannelHandler.holdTime = 120; |
143 | + bgpControllerImpl.getConfig().setLsCapability(true); | ||
144 | + BgpValueType tempTlv1 = new MultiProtocolExtnCapabilityTlv(afi, res, safi); | ||
145 | + peer1.peerChannelHandler.capabilityTlv.add(tempTlv1); | ||
134 | peer1.connect(connectToSocket); | 146 | peer1.connect(connectToSocket); |
135 | 147 | ||
136 | boolean result; | 148 | boolean result; |
149 | + result = peer1.peerFrameDecoder.receivedOpenMessageLatch.await(MESSAGE_TIMEOUT_MS, TimeUnit.MILLISECONDS); | ||
150 | + assertThat(result, is(true)); | ||
151 | + result = peer1.peerFrameDecoder.receivedKeepaliveMessageLatch.await(MESSAGE_TIMEOUT_MS, TimeUnit.MILLISECONDS); | ||
152 | + assertThat(result, is(true)); | ||
137 | result = peer1.peerFrameDecoder.receivedNotificationMessageLatch.await( | 153 | result = peer1.peerFrameDecoder.receivedNotificationMessageLatch.await( |
138 | MESSAGE_TIMEOUT_MS, | 154 | MESSAGE_TIMEOUT_MS, |
139 | TimeUnit.MILLISECONDS); | 155 | TimeUnit.MILLISECONDS); |
140 | - assertThat(result, is(true)); | 156 | + assertThat(result, is(false)); |
141 | } | 157 | } |
142 | 158 | ||
143 | @Test | 159 | @Test |
... | @@ -201,6 +217,9 @@ public class BgpControllerImplTest { | ... | @@ -201,6 +217,9 @@ public class BgpControllerImplTest { |
201 | @Test | 217 | @Test |
202 | public void bgpOpenMessageTest6() throws InterruptedException { | 218 | public void bgpOpenMessageTest6() throws InterruptedException { |
203 | // Open message with as4 capability | 219 | // Open message with as4 capability |
220 | + short afi = 16388; | ||
221 | + byte res = 0; | ||
222 | + byte safi = 71; | ||
204 | peer1.peerChannelHandler.asNumber = 200; | 223 | peer1.peerChannelHandler.asNumber = 200; |
205 | peer1.peerChannelHandler.version = 4; | 224 | peer1.peerChannelHandler.version = 4; |
206 | peer1.peerChannelHandler.holdTime = 120; | 225 | peer1.peerChannelHandler.holdTime = 120; |
... | @@ -208,6 +227,9 @@ public class BgpControllerImplTest { | ... | @@ -208,6 +227,9 @@ public class BgpControllerImplTest { |
208 | bgpControllerImpl.getConfig().setLargeASCapability(true); | 227 | bgpControllerImpl.getConfig().setLargeASCapability(true); |
209 | BgpValueType tempTlv = new FourOctetAsNumCapabilityTlv(200); | 228 | BgpValueType tempTlv = new FourOctetAsNumCapabilityTlv(200); |
210 | peer1.peerChannelHandler.capabilityTlv.add(tempTlv); | 229 | peer1.peerChannelHandler.capabilityTlv.add(tempTlv); |
230 | + bgpControllerImpl.getConfig().setLsCapability(true); | ||
231 | + BgpValueType tempTlv1 = new MultiProtocolExtnCapabilityTlv(afi, res, safi); | ||
232 | + peer1.peerChannelHandler.capabilityTlv.add(tempTlv1); | ||
211 | peer1.connect(connectToSocket); | 233 | peer1.connect(connectToSocket); |
212 | 234 | ||
213 | boolean result; | 235 | boolean result; | ... | ... |
-
Please register or login to post a comment