当前位置: 首页>>代码示例>>Java>>正文


Java OspfInterfaceState.BDR属性代码示例

本文整理汇总了Java中org.onosproject.ospf.protocol.util.OspfInterfaceState.BDR属性的典型用法代码示例。如果您正苦于以下问题:Java OspfInterfaceState.BDR属性的具体用法?Java OspfInterfaceState.BDR怎么用?Java OspfInterfaceState.BDR使用的例子?那么恭喜您, 这里精选的属性代码示例或许可以为您提供帮助。您也可以进一步了解该属性所在org.onosproject.ospf.protocol.util.OspfInterfaceState的用法示例。


在下文中一共展示了OspfInterfaceState.BDR属性的7个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: processRefreshLsa

/**
 * Process refresh LSA.
 *
 * @param wrapper LSA wrapper instance
 */
private void processRefreshLsa(LsaWrapper wrapper) throws Exception {
    if (wrapper.isSelfOriginated()) { //self originated
        //set the destination
        OspfInterface ospfInterface = wrapper.ospfInterface();
        if (ospfInterface != null) {
            LsaHeader header = ((LsaWrapperImpl) wrapper).lsaHeader();
            header.setAge(wrapper.currentAge());
            if (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DR) {
                if (header.lsType() == OspfLsaType.ROUTER.value()) {
                    RouterLsa routerLsa = ((OspfAreaImpl) ospfArea).buildRouterLsa(ospfInterface);
                    ((OspfAreaImpl) ospfArea).addLsa(routerLsa, true, ospfInterface);
                    ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(routerLsa);
                } else if (header.lsType() == OspfLsaType.NETWORK.value()) {
                    if (ospfInterface.listOfNeighbors().size() > 0) {
                        NetworkLsa networkLsa = ((OspfAreaImpl) ospfArea).buildNetworkLsa(
                                ospfInterface.ipAddress(), ospfInterface.ipNetworkMask());
                        ospfArea.addLsa(networkLsa, true, ospfInterface);
                        ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(networkLsa);
                    }
                }
            }

            if (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.BDR ||
                    ((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.POINT2POINT ||
                    ((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DROTHER) {
                ospfArea.refreshArea(ospfInterface);
            }
            log.debug("LSAQueueConsumer: processRefreshLsa - Flooded SelfOriginated LSA {}",
                      ((LsaWrapperImpl) wrapper).lsaHeader());
        }
    }
}
 
开发者ID:shlee89,项目名称:athena,代码行数:37,代码来源:LsaQueueConsumer.java

示例2: neighborChange

/**
 * Neighbor change event is triggered when the router priority gets changed.
 *
 * @throws Exception might throws exception
 */
public void neighborChange() throws Exception {
    log.debug("OSPFInterfaceChannelHandler::neighborChange ");
    if (state() == OspfInterfaceState.DR || state() == OspfInterfaceState.BDR ||
            state() == OspfInterfaceState.DROTHER) {
        electRouter(channel);
    }
}
 
开发者ID:shlee89,项目名称:athena,代码行数:12,代码来源:OspfInterfaceImpl.java

示例3: processRefreshLsa

/**
 * Process refresh LSA.
 *
 * @param wrapper LSA wrapper instance
 */
private void processRefreshLsa(LsaWrapper wrapper) throws OspfParseException {
    if (wrapper.isSelfOriginated()) { //self originated
        //set the destination
        OspfInterface ospfInterface = wrapper.ospfInterface();
        if (ospfInterface != null) {
            LsaHeader header = ((LsaWrapperImpl) wrapper).lsaHeader();
            header.setAge(wrapper.currentAge());
            if (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DR) {
                if (header.lsType() == OspfLsaType.ROUTER.value()) {
                    RouterLsa routerLsa = ((OspfAreaImpl) ospfArea).buildRouterLsa(ospfInterface);
                    ((OspfAreaImpl) ospfArea).addLsa(routerLsa, true, ospfInterface);
                    ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(routerLsa);
                } else if (header.lsType() == OspfLsaType.NETWORK.value()) {
                    if (ospfInterface.listOfNeighbors().size() > 0) {
                        NetworkLsa networkLsa = ((OspfAreaImpl) ospfArea).buildNetworkLsa(
                                ospfInterface.ipAddress(), ospfInterface.ipNetworkMask());
                        ospfArea.addLsa(networkLsa, true, ospfInterface);
                        ((OspfAreaImpl) ospfArea).addToOtherNeighborLsaTxList(networkLsa);
                    }
                }
            }

            if (((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.BDR ||
                    ((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.POINT2POINT ||
                    ((OspfInterfaceImpl) ospfInterface).state() == OspfInterfaceState.DROTHER) {
                ospfArea.refreshArea(ospfInterface);
            }
            log.debug("LSAQueueConsumer: processRefreshLsa - Flooded SelfOriginated LSA {}",
                      ((LsaWrapperImpl) wrapper).lsaHeader());
        }
    }
}
 
开发者ID:opennetworkinglab,项目名称:onos,代码行数:37,代码来源:LsaQueueConsumer.java

示例4: neighborChange

/**
 * Neighbor change event is triggered when the router priority gets changed.
 */
public void neighborChange() {
    log.debug("OSPFInterfaceChannelHandler::neighborChange ");
    if (state() == OspfInterfaceState.DR || state() == OspfInterfaceState.BDR ||
            state() == OspfInterfaceState.DROTHER) {
        electRouter(channel);
    }
}
 
开发者ID:opennetworkinglab,项目名称:onos,代码行数:10,代码来源:OspfInterfaceImpl.java

示例5: processLsRequestMessage

/**
 * Process the Ls Request message.
 *
 * @param ospfMessage OSPF message instance.
 * @param ctx         channel handler context instance.
 * @throws Exception might throws exception
 */
void processLsRequestMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) throws Exception {
    log.debug("OspfChannelHandler::processLsRequestMessage...!!!");
    Channel channel = ctx.getChannel();
    LsRequest lsrPacket = (LsRequest) ospfMessage;
    OspfNbr nbr = neighbouringRouter(lsrPacket.routerId().toString());

    if (nbr.getState() == OspfNeighborState.EXCHANGE || nbr.getState() == OspfNeighborState.LOADING ||
            nbr.getState() == OspfNeighborState.FULL) {

        LsRequest reqMsg = (LsRequest) ospfMessage;
        if (reqMsg.getLinkStateRequests().isEmpty()) {
            log.debug("Received Link State Request Vector is Empty ");
            return;
        } else {
            //Send the LsUpdate back
            ListIterator<LsRequestPacket> listItr = reqMsg.getLinkStateRequests().listIterator();
            while (listItr.hasNext()) {
                LsUpdate lsupdate = new LsUpdate();
                lsupdate.setOspfVer(OspfUtil.OSPF_VERSION);
                lsupdate.setOspftype(OspfPacketType.LSUPDATE.value());
                lsupdate.setRouterId(ospfArea.routerId());
                lsupdate.setAreaId(ospfArea.areaId());
                lsupdate.setAuthType(OspfUtil.NOT_ASSIGNED);
                lsupdate.setAuthentication(OspfUtil.NOT_ASSIGNED);
                lsupdate.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
                lsupdate.setChecksum(OspfUtil.NOT_ASSIGNED);

                //limit to mtu
                int currentLength = OspfUtil.OSPF_HEADER_LENGTH + OspfUtil.FOUR_BYTES;
                int maxSize = mtu() -
                        OspfUtil.LSA_HEADER_LENGTH; // subtract a normal IP header.
                int noLsa = 0;
                while (listItr.hasNext()) {
                    LsRequestPacket lsRequest = (LsRequestPacket) listItr.next();
                    // to verify length of the LSA
                    LsaWrapper wrapper = ospfArea.getLsa(lsRequest.lsType(), lsRequest.linkStateId(),
                                                         lsRequest.ownRouterId());
                    OspfLsa ospflsa = wrapper.ospfLsa();
                    if ((currentLength + ((LsaWrapperImpl) wrapper).lsaHeader().lsPacketLen()) >= maxSize) {
                        listItr.previous();
                        break;
                    }
                    if (ospflsa != null) {
                        lsupdate.addLsa(ospflsa);
                        noLsa++;

                        currentLength = currentLength + ((LsaWrapperImpl) wrapper).lsaHeader().lsPacketLen();
                    } else {
                        nbr.badLSReq(channel);
                    }
                }
                lsupdate.setNumberOfLsa(noLsa);
                //set the destination
                if (state() == OspfInterfaceState.DR ||
                        state() == OspfInterfaceState.BDR ||
                        state() == OspfInterfaceState.POINT2POINT) {
                    lsupdate.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS);
                } else if (state() == OspfInterfaceState.DROTHER) {
                    lsupdate.setDestinationIp(OspfUtil.ALL_DROUTERS);
                }
                byte[] messageToWrite = getMessage(lsupdate);
                ctx.getChannel().write(messageToWrite);
            }
        }
    }
}
 
开发者ID:shlee89,项目名称:athena,代码行数:73,代码来源:OspfInterfaceImpl.java

示例6: run

@Override
public void run() {
    if (!linkStateHeaders().isEmpty()) {
        isDelayedAckTimerScheduled = true;
        if (ch != null && ch.isConnected()) {

            List<LsaHeader> listOfLsaHeadersAcknowledged = new ArrayList<>();
            List<LsaHeader> listOfLsaHeaders = linkStateHeaders();
            log.debug("Delayed Ack, Number of Lsa's to Ack {}", listOfLsaHeaders.size());
            Iterator itr = listOfLsaHeaders.iterator();
            while (itr.hasNext()) {
                LsAcknowledge ackContent = new LsAcknowledge();
                //Setting OSPF Header
                ackContent.setOspfVer(OspfUtil.OSPF_VERSION);
                ackContent.setOspftype(OspfPacketType.LSAACK.value());
                ackContent.setRouterId(ospfArea.routerId());
                ackContent.setAreaId(ospfArea.areaId());
                ackContent.setAuthType(OspfUtil.NOT_ASSIGNED);
                ackContent.setAuthentication(OspfUtil.NOT_ASSIGNED);
                ackContent.setOspfPacLength(OspfUtil.NOT_ASSIGNED);
                ackContent.setChecksum(OspfUtil.NOT_ASSIGNED);
                //limit to mtu
                int currentLength = OspfUtil.OSPF_HEADER_LENGTH;
                int maxSize = mtu() -
                        OspfUtil.LSA_HEADER_LENGTH; // subtract a normal IP header.
                while (itr.hasNext()) {
                    if ((currentLength + OspfUtil.LSA_HEADER_LENGTH) >= maxSize) {
                        break;
                    }
                    LsaHeader lsaHeader = (LsaHeader) itr.next();
                    ackContent.addLinkStateHeader(lsaHeader);
                    currentLength = currentLength + OspfUtil.LSA_HEADER_LENGTH;
                    listOfLsaHeadersAcknowledged.add(lsaHeader);
                    log.debug("Delayed Ack, Added Lsa's to Ack {}", lsaHeader);
                }

                log.debug("Delayed Ack, Number of Lsa's in LsAck packet {}",
                          ackContent.getLinkStateHeaders().size());

                //set the destination
                if (state() == OspfInterfaceState.DR || state() == OspfInterfaceState.BDR
                        || state() == OspfInterfaceState.POINT2POINT) {
                    ackContent.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS);
                } else if (state() == OspfInterfaceState.DROTHER) {
                    ackContent.setDestinationIp(OspfUtil.ALL_DROUTERS);
                }
                byte[] messageToWrite = getMessage(ackContent);
                ch.write(messageToWrite);

                for (LsaHeader lsa : listOfLsaHeadersAcknowledged) {
                    linkStateHeaders().remove(lsa);
                    removeLsaFromNeighborMap(((OspfAreaImpl) ospfArea).getLsaKey(lsa));
                }
            }
        }
    }
}
 
开发者ID:shlee89,项目名称:athena,代码行数:57,代码来源:OspfInterfaceImpl.java

示例7: processLsRequestMessage

/**
 * Process the Ls Request message.
 *
 * @param ospfMessage OSPF message instance.
 * @param ctx         channel handler context instance.
 */
void processLsRequestMessage(OspfMessage ospfMessage, ChannelHandlerContext ctx) {
    log.debug("OspfChannelHandler::processLsRequestMessage...!!!");
    Channel channel = ctx.getChannel();
    LsRequest lsrPacket = (LsRequest) ospfMessage;
    OspfNbr nbr = neighbouringRouter(lsrPacket.routerId().toString());

    if (nbr.getState() == OspfNeighborState.EXCHANGE || nbr.getState() == OspfNeighborState.LOADING ||
            nbr.getState() == OspfNeighborState.FULL) {

        LsRequest reqMsg = (LsRequest) ospfMessage;
        if (reqMsg.getLinkStateRequests().isEmpty()) {
            log.debug("Received Link State Request Vector is Empty ");
            return;
        } else {
            //Send the LsUpdate back
            ListIterator<LsRequestPacket> listItr = reqMsg.getLinkStateRequests().listIterator();
            while (listItr.hasNext()) {
                LsUpdate lsupdate = new LsUpdate();
                lsupdate.setOspfVer(OspfUtil.OSPF_VERSION);
                lsupdate.setOspftype(OspfPacketType.LSUPDATE.value());
                lsupdate.setRouterId(ospfArea.routerId());
                lsupdate.setAreaId(ospfArea.areaId());
                lsupdate.setAuthType(OspfUtil.NOT_ASSIGNED);
                lsupdate.setAuthentication(OspfUtil.NOT_ASSIGNED);
                lsupdate.setOspfPacLength(OspfUtil.NOT_ASSIGNED); // to calculate packet length
                lsupdate.setChecksum(OspfUtil.NOT_ASSIGNED);

                //limit to mtu
                int currentLength = OspfUtil.OSPF_HEADER_LENGTH + OspfUtil.FOUR_BYTES;
                int maxSize = mtu() -
                        OspfUtil.LSA_HEADER_LENGTH; // subtract a normal IP header.
                int noLsa = 0;
                while (listItr.hasNext()) {
                    LsRequestPacket lsRequest = listItr.next();
                    // to verify length of the LSA
                    LsaWrapper wrapper = ospfArea.getLsa(lsRequest.lsType(), lsRequest.linkStateId(),
                                                         lsRequest.ownRouterId());
                    if (wrapper != null) {
                        OspfLsa ospflsa = wrapper.ospfLsa();
                        if ((currentLength + ((LsaWrapperImpl) wrapper).lsaHeader().lsPacketLen()) >= maxSize) {
                            listItr.previous();
                            break;
                        }
                        if (ospflsa != null) {
                            lsupdate.addLsa(ospflsa);
                            noLsa++;

                            currentLength = currentLength + ((LsaWrapperImpl) wrapper).lsaHeader().lsPacketLen();
                        } else {
                            nbr.badLSReq(channel);
                        }
                    }
                }
                lsupdate.setNumberOfLsa(noLsa);
                //set the destination
                if (state() == OspfInterfaceState.DR ||
                        state() == OspfInterfaceState.BDR ||
                        state() == OspfInterfaceState.POINT2POINT) {
                    lsupdate.setDestinationIp(OspfUtil.ALL_SPF_ROUTERS);
                } else if (state() == OspfInterfaceState.DROTHER) {
                    lsupdate.setDestinationIp(OspfUtil.ALL_DROUTERS);
                }
                byte[] messageToWrite = getMessage(lsupdate);
                ctx.getChannel().write(messageToWrite);
            }
        }
    }
}
 
开发者ID:opennetworkinglab,项目名称:onos,代码行数:74,代码来源:OspfInterfaceImpl.java


注:本文中的org.onosproject.ospf.protocol.util.OspfInterfaceState.BDR属性示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。