This PR converts tabs to white spaces.
The statement I used for the conversion:
```find . -name "*.[ch]" -exec zsh -c 'expand -t 4 "$0" > /tmp/e && mv /tmp/e "$0"' {} \;```
Afterwards, I had a quick overview of the converted files to prevent odd indentation.
The current implementation does not set the ack bit
for outgoing data segments and the fin segment.
However, RFC793 states that all segments
should have an ack bit set in order to present a valid
ack nr. in outgoing segments.
Currently, data segments and acknowledgement segments
are distinguished by the existence of their ack bit.
With the new assumption, that both of these types of
segments need an ack bit set, I had to change several
parts of the current implementation to make this
decision by inspecting the payload size.
destiny: added parens
In the current implementation the data offset is coded into an uint8_t.
Of this uint8_t only 3 bits apply for the data offset.
The remaining bits represent reserved flags for future use.
However, a proper bit masking is forgotten in order
to obtain the data offset part of this uint8_t.
Therefore, defining this uint8_t as a bit field allows a more convenient
method of access.
When accessing the length field of an ipv6_header a byte order switch (host -> network) is necessary.
Otherwise, it breaks calculations or the checksum and other tcp related computations.
Furthermore, when writing to ipv6_header->length it is important to switch this
from host byte order to network byte order.
send_tcp returns either the length of the sent data,
or -1, if an error was detected.
The current implementation checks for != 1.
This results in executing the error case, although
there was semantically no error returned from send_tcp.
get_socket(i) returns NULL, when no specific socket is found.
Without an appropriate check for NULL, the current state
of the code leads to a segfault.
destiny: added parens
destiny: continuing the loop makes more sense than returning at first sight of NULL