Please note: This file is automatically generated from all TODO comments found within the code
- Line 152: Handle readv../writev.. and fread/fwrite
- Line 67: reduce redundant arguments passed to arp_send_req/reply
- Line 68: infer interface and hwtype based on routing rules
- Line 32: Take endianness into account in ipv4_hdr
- Line 29: Implement 'virtual' network interfaces
- Line 43: Move arptbl into an 'ethernet' hardware struct into
void *ll
- Line 13: Make LOG_MAX configurable
- Line 46: Take endianness into account in tcp_hdr
- Line 183: Fix endianness in tcp.h
- Line 74: Ensure chosen outgoing TCP port isn't in use already
- Line 144: Handle SHUT_RD in shutdown_tcp
- Line 69: Try mmap() buffers into one contiguous region with one memcpy call
- Line 162: Use hashtable for ARP lookups on IPv4
- Line 173: ARP doesn't account for protocol addresses that change hw
- Line 240: Use hwtype to determine length and type of address
- Line 241: Change arp_send_req to handle other address types
- Line 317: Change arp_send_reply to handle other address types
- Line 323: Use hwtype to determine length and type of address
- Line 20: Check and compare intf->vlan to hdr->vlan and reject if no match
- Line 92: Don't assume IPv4 parent
- Line 97: Find ICMP route
- Line 113: Fix frame->data pointer head/tail difference
- Line 46: Change to
if (!ipv4_should_accept(frame))
to accept other packets - Line 101: Keep track of invalid packets
- Line 113: Take options into account here
- Line 120: Other integrity checks
- Line 122: Change to
if (!ipv4_should_accept(frame))
to accept other packets - Line 155: Dynamically allocate IPv4 header space
- Line 163: Make this user-configurable
- Line 18: Take source address into route calculation
- Line 33: Perform correct route/hardware address lookups when appropriate
- Line 56: Make ARP/NDP request now, instead of later to reduce waiting time
- Line 167: Rate limit ARP requests to prevent flooding
- Line 178: Use inet_socket for passing options to neighbour
- Line 33: Define how routes with the same metric should behave?
- Line 21: Use hashtbl instead of list to lookup sockets
- Line 86: Implement rx 'software' timestamping
- Line 106: Conditionally print debugging information
- Line 178: Check intf hwtype to calculate max frame size
- Line 208: Selectively choose an appropriate address from intf
- Line 127: Move some of this cleanup logic into a generic intf_free() function
- Line 159: Allocate a buffer from the interface for frame storage
- Line 164: Find an appropriate size for the control buffer
- Line 32: Allow TUN/TAP name configuration
- Line 50: Fix TUN/TAP SIOCGIFMTU: EINVAL
- Line 96: Check for IFF_PI and allocate space for it
- Line 30: Wait for all connections to be closed/reset
- Line 60: Optionally don't send TCP RST packets
- Line 145: Implement TCP/IPv4 precedence, IPv6 has no security/precedence
- Line 303: Implement TCP/IPv4 precedence, IPv6 has no security/precedence
- Line 373: Parse incoming TCP options for MSS value
- Line 411: If there are other controls or text in the segment,
- Line 488: Handle duplicate incoming segments in TIME-WAIT
- Line 504: Store out-of-order segments that are >RCV.NXT for later processing
- Line 646: Implement RFC 5961 Section 4: Blind Reset Attack on SYN
- Line 745: Is sending an ACK here necessary?
- Line 786: Send success to waiting close() calls
- Line 1001: stop other TCP timers in FIN-WAIT-2
- Line 1018: stop other TCP timers in FIN-WAIT-2
- Line 23: Don't assume IPv4 L3, choose based on sock->saddr
- Line 33: Don't assume IPv4 pseudo-header for checksumming
- Line 39: Implement functionality to specify IP flags (different for IP4/6?)
- Line 40: Send socket flags to neigh_send_to() in tcp_send()
- Line 266: Calculate IP layer options in tcp_send_data()
- Line 269: Take into account ethernet header variations, such as VLAN tags
- Line 98: Optionally only send the missing bytes instead of just a full segment worth
- Line 24: Use frame->sock for socket lookup
- Line 145: Check for TSO and GRO and account for it, somehow..
- Line 154: Other integrity checks
- Line 157: Parse incoming TCP segment options
- Line 179: Perform queued actions when reaching certain states
- Line 226: Choose suitable default MSS for IPv4/IPv6
- Line 348: Choose a random unused outgoing port
- Line 353: Choose a secure initial sequence number
- Line 16: Handle sending SIGPIPE for dead connections to calling process
- Line 67: Fill out 'user timeout' information
- Line 133: Write to sndbuf and output directly at the same time
- Line 134: Limit the size of the send buffer. Block if the buffer is full
- Line 137: Signal sending thread and offload segmentation/transmission
- Line 138: Check for MSG_MORE flag and don't trigger for a short while
- Line 200: Rewind the send buffer to the amount of data we actually sent
- Line 214: Don't return EOF until recv'd up to FIN seqn
- Line 368: Check for MSG_PEEK and conditionally don't do this
- Line 390: tcp_close() request until all send() calls have completed
- Line 404: Check for pending send() calls
- Line 413: If unsent data, queue sending FIN/ACK on CLOSING
- Line 525: Check for O_NONBLOCK and return EWOULDBLOCK in tcp_user_accept
- Line 17: Add many configurable interfaces
- Line 18: Add loopback interface
- Line 31: Take interface etc. configuration from config file
- Line 24: Parse config based on argv/configuration file