TCP packet handling declarations.
More...
TCP packet handling declarations.
- Author
- Simon Brummer simon.nosp@m..bru.nosp@m.mmer@.nosp@m.post.nosp@m.eo.de
Definition in file gnrc_tcp_pkt.h.
#include <stdint.h>
#include "net/gnrc.h"
#include "net/gnrc/tcp/tcb.h"
Go to the source code of this file.
int | _gnrc_tcp_pkt_build_reset_from_pkt (gnrc_pktsnip_t **out_pkt, gnrc_pktsnip_t *in_pkt) |
| Build a reset packet from an incoming packet.
|
|
int | _gnrc_tcp_pkt_build (gnrc_tcp_tcb_t *tcb, gnrc_pktsnip_t **out_pkt, uint16_t *seq_con, const uint16_t ctl, const uint32_t seq_num, const uint32_t ack_num, void *payload, const size_t payload_len) |
| Build and allocate a TCB packet, TCB stores pointer to new packet.
|
|
int | _gnrc_tcp_pkt_send (gnrc_tcp_tcb_t *tcb, gnrc_pktsnip_t *out_pkt, const uint16_t seq_con, const bool retransmit) |
| Sends packet to peer.
|
|
int | _gnrc_tcp_pkt_chk_seq_num (const gnrc_tcp_tcb_t *tcb, const uint32_t seq_num, const uint32_t seg_len) |
| Verify sequence number.
|
|
uint32_t | _gnrc_tcp_pkt_get_seg_len (gnrc_pktsnip_t *pkt) |
| Extracts the length of a segment.
|
|
uint32_t | _gnrc_tcp_pkt_get_pay_len (gnrc_pktsnip_t *pkt) |
| Calculates a packets payload length.
|
|
int | _gnrc_tcp_pkt_setup_retransmit (gnrc_tcp_tcb_t *tcb, gnrc_pktsnip_t *pkt, const bool retransmit) |
| Adds a packet to the retransmission mechanism.
|
|
int | _gnrc_tcp_pkt_acknowledge (gnrc_tcp_tcb_t *tcb, const uint32_t ack) |
| Acknowledges and removes packet from the retransmission mechanism.
|
|
uint16_t | _gnrc_tcp_pkt_calc_csum (const gnrc_pktsnip_t *hdr, const gnrc_pktsnip_t *pseudo_hdr, const gnrc_pktsnip_t *payload) |
| Calculates checksum over payload, TCP header and network layer header.
|
|
◆ _gnrc_tcp_pkt_acknowledge()
int _gnrc_tcp_pkt_acknowledge |
( |
gnrc_tcp_tcb_t * |
tcb, |
|
|
const uint32_t |
ack |
|
) |
| |
Acknowledges and removes packet from the retransmission mechanism.
- Parameters
-
[in,out] | tcb | TCB holding the connection information. |
[in] | ack | Acknowldegment number used to acknowledge packets. |
- Returns
- Zero on success. -ENODATA if there is nothing to acknowledge.
◆ _gnrc_tcp_pkt_build()
int _gnrc_tcp_pkt_build |
( |
gnrc_tcp_tcb_t * |
tcb, |
|
|
gnrc_pktsnip_t ** |
out_pkt, |
|
|
uint16_t * |
seq_con, |
|
|
const uint16_t |
ctl, |
|
|
const uint32_t |
seq_num, |
|
|
const uint32_t |
ack_num, |
|
|
void * |
payload, |
|
|
const size_t |
payload_len |
|
) |
| |
Build and allocate a TCB packet, TCB stores pointer to new packet.
- Parameters
-
[in,out] | tcb | TCB holding the connection information. |
[out] | out_pkt | Pointer to packet to build. |
[out] | seq_con | Sequence number consumption of built packet. |
[in] | ctl | Control bits to set in out_pkt . |
[in] | seq_num | Sequence number of the new packet. |
[in] | ack_num | Acknowledgment number of the new packet. |
[in] | payload | Pointer to payload buffer. |
[in] | payload_len | Payload size. |
- Returns
- Zero on success. -ENOMEM if pktbuf is full.
◆ _gnrc_tcp_pkt_build_reset_from_pkt()
Build a reset packet from an incoming packet.
- Note
- This function builds a reset from an incoming packet in cases where the connection has not been established.
- Parameters
-
[out] | out_pkt | Outgoing reset packet |
[in] | in_pkt | Incoming packet |
- Returns
- Zero on success -ENOMEM if pktbuf is full.
◆ _gnrc_tcp_pkt_calc_csum()
Calculates checksum over payload, TCP header and network layer header.
- Parameters
-
[in] | hdr | Gnrc_pktsnip_t to TCP header. |
[in] | pseudo_hdr | Gnrc_pktsnip_t to network layer header. |
[in] | payload | Gnrc_pktsnip_t to payload. |
- Returns
- Non-zero checksum if given network layer is supported. Zero if given network layer is not supported.
◆ _gnrc_tcp_pkt_chk_seq_num()
int _gnrc_tcp_pkt_chk_seq_num |
( |
const gnrc_tcp_tcb_t * |
tcb, |
|
|
const uint32_t |
seq_num, |
|
|
const uint32_t |
seg_len |
|
) |
| |
Verify sequence number.
- Parameters
-
[in,out] | tcb | TCB holding the connection information. |
[in] | seq_num | Sequence number from the segment. |
[in] | seg_len | Length of a segments payload. |
- Returns
- Zero if the sequence number is acceptable. Negative value if the sequence number is not acceptable.
◆ _gnrc_tcp_pkt_get_pay_len()
Calculates a packets payload length.
- Parameters
-
[in] | pkt | Packet to calculate payload length. |
- Returns
- The packets payload length in bytes.
◆ _gnrc_tcp_pkt_get_seg_len()
Extracts the length of a segment.
- Parameters
-
[in] | pkt | Packet to calculate the segments length. |
- Returns
- Segments length in bytes (== sequence number consumption).
◆ _gnrc_tcp_pkt_send()
Sends packet to peer.
- Parameters
-
[in,out] | tcb | TCB holding the connection information. |
[in] | out_pkt | Pointer to packet to send. |
[in] | seq_con | Sequence number consumption of the packet to send. |
[in] | retransmit | Flag so mark that packet this is a retransmission. |
- Returns
- Zero on success. -EINVAL if out_pkt was NULL.
◆ _gnrc_tcp_pkt_setup_retransmit()
Adds a packet to the retransmission mechanism.
- Parameters
-
[in,out] | tcb | TCB holding the connection information. |
[in] | pkt | Packet to add to the retransmission mechanism. |
[in] | retransmit | Flag used to indicate that pkt is a retransmit. |
- Returns
- Zero on success. -ENOMEM if the retransmission queue is full. -EINVAL if pkt is null.