int main(int argc, char *argv[]) { (void) argc; (void) argv; ipv4(); ipv6(); std::cout << "Ok\n"; return 0; }
lmp_ipcc::IPCC_ptr NetworkIF_i::getIPCC( ::CORBA::Long remoteAddress, ::CORBA::Short remotePortNumber) { boost::asio::ip::address_v4 ipv4(remoteAddress); boost::asio::ip::udp::endpoint remote_endpoint(ipv4, remotePortNumber); IPCCByRemoteEndPointMap::const_iterator ipccIter = m_IPCCs.find(remote_endpoint); if (ipccIter != m_IPCCs.end()) { return ipccIter->second; } throw lmp_netif::No_Such_Entity(); }
lmp_ipcc::IPCC_ptr NetworkIF_i::createIPCC( ::CORBA::Long remoteAddress, ::CORBA::Short remotePortNumber) { boost::asio::ip::address_v4 ipv4(remoteAddress); boost::asio::ip::udp::endpoint remote_endpoint(ipv4, remotePortNumber); IPCCByRemoteEndPointMap::const_iterator ipccIter = m_IPCCs.find(remote_endpoint); if (ipccIter == m_IPCCs.end()) { lmp::cc::IpccMsgReceiveIF* ipccPtr = m_msgHandler.createIpcc(remote_endpoint, m_networkIfProxy, m_io_context); if (ipccPtr) { lmp::cc::IpccApplicationIF* ipccApplPtr = dynamic_cast<lmp::cc::IpccApplicationIF*>(ipccPtr); if (ipccApplPtr) { lmp_ipcc::IPCC_i* servant = new lmp_ipcc::IPCC_i(m_POA, m_node, m_networkIfProxy, *ipccApplPtr, m_ipccInDestructionFtor); PortableServer::ObjectId *oid = m_POA->activate_object(servant); delete oid; lmp_ipcc::IPCC_ptr ipcc = servant->_this(); // servant->_remove_ref(); ipccIter = m_IPCCs.insert(IPCCByRemoteEndPointMap::value_type(remote_endpoint, lmp_ipcc::IPCC::_duplicate(ipcc))).first; if (ipccIter != m_IPCCs.end()) { lmp_ipcc::IPCC_ptr ipcc_ptr = ipccIter->second; if (ipcc_ptr) { for (IPCCAdjacencyObserverContainer::const_iterator obsIter = m_ipccAdjacencyObservers.begin(); obsIter != m_ipccAdjacencyObservers.end(); ++obsIter) { if (*obsIter) { ::lmp_ipcc_adjacency_observer::IPCCAdjacencyObserver_var observer = *obsIter; observer->ipccAdjacencyAdded(ipcc_ptr); } } } return ipcc_ptr; } } } } throw lmp_netif::Entity_Already_Exists(); }
std::unique_ptr<TxPacket> createICMPv4Pkt(SwSwitch* sw, folly::MacAddress dstMac, folly::MacAddress srcMac, VlanID vlan, folly::IPAddressV4& dstIP, folly::IPAddressV4& srcIP, ICMPv4Type icmpType, ICMPv4Code icmpCode, uint32_t bodyLength, BodyFn serializeBody) { IPv4Hdr ipv4(srcIP, dstIP, IP_PROTO_ICMP, ICMPHdr::SIZE + bodyLength); ipv4.computeChecksum(); ICMPHdr icmp4(icmpType, icmpCode, 0); uint32_t pktLen = icmp4.computeTotalLengthV4(bodyLength); auto pkt = sw->allocatePacket(pktLen); RWPrivateCursor cursor(pkt->buf()); icmp4.serializeFullPacket(&cursor, dstMac, srcMac, vlan, ipv4, bodyLength, serializeBody); return pkt; }
int process(char *packet) { struct s_ethernet *eth; /* the ethernet header */ char *payload; /* the IP header + packet payload */ /* parse ethernet header */ eth = (struct s_ethernet *) (packet); payload = packet + sizeof(struct s_ethernet); switch (htons(eth->type)) { case ETHERTYPE_IP: return ipv4(eth, payload); case ETHERTYPE_IPV6: return ipv6(eth, payload); case ETHERTYPE_ARP: log_debug("HW Protocol: ARP"); return arp(eth, payload); default: log_debug("HW Protocol: unknown [%d/0x%04x]", htons(eth->type), htons(eth->type)); return 1; } }
static server random() { return ( server( ipv4(192,u8(rand()),u8(rand()),u8(rand())), 28001 ) ); }
static ipv4 any() { return ( ipv4( 0, 0, 0, 0 ) ); }