Flexible IP

Collaboration diagram for Flexible IP:


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)

Function Documentation

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

Todo:
: should also add stuff infront of current buffer for tunnel

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().

Here is the call graph for this function:

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.

Todo:
FIXME

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().

Here is the call graph for this function:


Generated on Wed Dec 8 13:00:22 2010 for FIP by  doxygen 1.5.7.1