Modules | |
FIP Architecture | |
For full documentation see Architecture | |
Framework | |
IP Core Functions | |
6LoWPAN Implementation | |
Debug | |
Transport Layer Protocols | |
Files | |
file | fip_ip.c |
Core IP Calls. | |
Functions | |
void | fip_ip_process (void) |
The IP Input Function. | |
void | fip_ip_send (void) |
void fip_ip_process | ( | void | ) |
The IP Input Function.
Handles all required IP input information.
We use a local variable here. This is as many comparisons will be made to select IPv6 vs. IPv4 processing. By having this as a local variable, code size should be improved. Possibly should check if pushing into a register makes this even better, but the compiler probably knows better than us about if this should go in a register or not.
IPv6 Header Length
IPv6 Source Address Checks
IPv6 Destination Address Checks
IPv6 Next Header Processing
References fip_ip6frag_attr_t::expectedBytes, fip_ip6frag_attr_t::expireTime16s, FIP_EXTHDR_OPT_ACTIONDROP, FIP_EXTHDR_OPT_ACTIONFORCE, FIP_EXTHDR_OPT_ACTIONSKIP, fip_icmp6_generateError(), fip_icmp6_process(), FIP_ICMPV6_CODE_ERRORGENERAL, FIP_ICMPV6_CODE_ERRORNH, FIP_ICMPV6_CODE_ERROROPT, fip_if6_isDestMyMulticast(), fip_if6_isDestMyUnicast(), fip_if_isForwardingEnabled, fip_packet_activeBufSplit(), fip_packet_activeDrop(), fip_packet_activeQueuePacket(), fip_packet_getAttr, fip_packet_getBufMaxSize, fip_packet_getBufPtr, fip_packet_getBufSize, fip_packet_getFromIP6Hdr_isDestMulticast, fip_packet_getFromIP6Hdr_isSrcMulticast, fip_packet_getFromIP6Hdr_length, fip_packet_getFromIPHdr_version, fip_packet_ptrBufCpyFromActive(), fip_packet_setAddrFlags, fip_packet_setAttr, fip_packet_setBufSize, fip_packet_setToIP6Hdr_length, fip_packet_spGetPtr, fip_route6_process(), fip_toUint16, fip_ip6frag_attr_t::firstFrag, fip_ip6frag_attr_t::fragId, fip_ip6frag_attr_t::lastFrag, PS_IPFRAG, PS_PROCESSIP, fip_ip6frag_attr_t::receivedBytes, fip_packet_t::scratchPad, TRACE, TRACE_ADDVARH, and fip_ip6frag_attr_t::unfragmentSize.
Referenced by fip_task().
void fip_ip_send | ( | void | ) |
We use a local variable here. This is as many comparisons will be made to select IPv6 vs. IPv4 processing. By having this as a local variable, code size should be improved. Possibly should check if pushing into a register makes this even better, but the compiler probably knows better than us about if this should go in a register or not.
References fip_ip6addr_t::addr, fip_ip6addr_cpy, fip_isDestUnspecified(), fip_nd6_neighbourCache_add(), fip_nd6_neighbourCache_getState, fip_nd6_neighbourCache_lookupByIp(), fip_packet_activeDrop(), fip_packet_activeQueuePacket(), fip_packet_getAttr, fip_packet_getFromIP6Hdr_isDestMulticast, fip_packet_getFromIP6Hdr_srcPtr, fip_packet_getFromIPHdr_version, fip_packet_getIfNum, fip_packet_setAttr, fip_packet_setLLDestAddr, fip_packet_setLLSrcAddr, fip_packet_spGetPtr, fip_route6_getNextHop(), fip_timer_getExpireTime32miliS(), fip_ds6_searchStatus_t::index, fip_ds6_searchStatus_t::itemFound, PS_SEND, PS_STARTLLSEND, PS_WAITING_AR, and TRACE.
Referenced by fip_task().