short tableId = notification.getTableId().getValue();
byte[] data = notification.getPayload();
+ if (notification.getMatch() == null || notification.getMatch().getMetadata() == null) {
+ LOG.debug("on packet received where the match or metadata are null");
+ return;
+ }
BigInteger metadata = notification.getMatch().getMetadata().getMetadata();
Ethernet res = new Ethernet();
List<String> ertList = new ArrayList<String>();
List<String> irtList = new ArrayList<String>();
- for (VpnTarget vpnTarget : vpnTargetList) {
- if (vpnTarget.getVrfRTType() == VpnTarget.VrfRTType.ExportExtcommunity) {
- ertList.add(vpnTarget.getVrfRTValue());
- }
- if (vpnTarget.getVrfRTType() == VpnTarget.VrfRTType.ImportExtcommunity) {
- irtList.add(vpnTarget.getVrfRTValue());
- }
- if (vpnTarget.getVrfRTType() == VpnTarget.VrfRTType.Both) {
- ertList.add(vpnTarget.getVrfRTValue());
- irtList.add(vpnTarget.getVrfRTValue());
+ if (vpnTargetList != null) {
+ for (VpnTarget vpnTarget : vpnTargetList) {
+ if (vpnTarget.getVrfRTType() == VpnTarget.VrfRTType.ExportExtcommunity) {
+ ertList.add(vpnTarget.getVrfRTValue());
+ }
+ if (vpnTarget.getVrfRTType() == VpnTarget.VrfRTType.ImportExtcommunity) {
+ irtList.add(vpnTarget.getVrfRTValue());
+ }
+ if (vpnTarget.getVrfRTType() == VpnTarget.VrfRTType.Both) {
+ ertList.add(vpnTarget.getVrfRTValue());
+ irtList.add(vpnTarget.getVrfRTValue());
+ }
}
+ } else {
+ LOG.error("vpn target list is empty, cannot add BGP VPN {} VRF {}", this.vpnName, rd);
+ return false;
}
-
try {
bgpManager.addVrf(rd, irtList, ertList);
} catch (Exception e) {
static Optional<IpAddress> getGatewayIpAddressFromInterface(String srcInterface,
INeutronVpnManager neutronVpnService, DataBroker dataBroker) {
Optional <IpAddress> gatewayIp = Optional.absent();
- Port port = neutronVpnService.getNeutronPort(srcInterface);
- //TODO(Gobinath): Need to fix this as assuming port will belong to only one Subnet would be incorrect"
- gatewayIp = Optional.of(neutronVpnService.getNeutronSubnet(port.getFixedIps().get(0).getSubnetId()).getGatewayIp());
+ if (neutronVpnService != null) {
+ //TODO(Gobinath): Need to fix this as assuming port will belong to only one Subnet would be incorrect"
+ Port port = neutronVpnService.getNeutronPort(srcInterface);
+ if (port != null && port.getFixedIps() != null && port.getFixedIps().get(0) != null && port.getFixedIps().get(0).getSubnetId() != null) {
+ gatewayIp = Optional.of(neutronVpnService.getNeutronSubnet(port.getFixedIps().get(0).getSubnetId()).getGatewayIp());
+ }
+ } else {
+ LOG.debug("neutron vpn service is not configured");
+ }
return gatewayIp;
}