Skip to content

Latest commit

 

History

History
144 lines (119 loc) · 6.69 KB

TODO.md

File metadata and controls

144 lines (119 loc) · 6.69 KB

A list of every todo comment in this project

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