XenevaOS
Loading...
Searching...
No Matches
tcp.h
Go to the documentation of this file.
1
30#ifndef __TCP_H__
31#define __TCP_H__
32
33#include <list.h>
34#include <Net/socket.h>
35#include <Net/ipv4.h>
36#include <Fs/vfs.h>
37
38#define TCP_FLAGS_FIN (1<<0)
39#define TCP_FLAGS_SYN (1<<1)
40#define TCP_FLAGS_RST (1<<2)
41#define TCP_FLAGS_PSH (1<<3)
42#define TCP_FLAGS_ACK (1<<4)
43#define TCP_FLAGS_URG (1<<5)
44#define TCP_FLAGS_ECE (1<<6)
45#define TCP_FLAGS_CWR (1<<7)
46#define TCP_FLAGS_NS (1<<8)
47#define TCP_DATA_OFFSET_5 (0x5 << 12)
48
49#define TCP_DEFAULT_WIN_SZ 65535
50
51#ifdef ARCH_X64
52#pragma pack(push,1)
53#endif
54__declspec(align(2))
55typedef struct _tcphead_ {
56 unsigned short srcPort;
57 unsigned short destPort;
58 unsigned sequenceNum;
59 unsigned ackNum;
60 unsigned short dataOffsetFlags;
61 unsigned short window;
62 unsigned short checksum;
63 unsigned short urgentPointer;
65#ifdef ARCH_X64
66#pragma pack(pop)
67#endif
68
69/*
70* CreateTCPSocket -- creates a new TCP Socket
71*/
72extern int CreateTCPSocket();
73
74/*
75 * TCPGetSocketList -- return the current socket
76 * list of TCP
77 */
78extern list_t* TCPGetSocketList();
79
80/*
81 * AuTCPAcknowledge -- send ack packets
82 * @param nic -- Pointer to NIC device
83 * @param sock -- Pointer to session socket
84 * @param ippack -- Pointer to IPv4 packet
85 * @param payloadLen -- length of the payload
86*/
87extern int AuTCPAcknowledge(AuVFSNode* nic, AuSocket* sock, IPv4Header* ippack, size_t payloadLen);
88
89/*
90 * TCPProtocolInstall -- initialize the TCP protocol
91 */
92extern void TCPProtocolInstall();
93
94#endif
AuVFSNode * nic
Definition e1000.cpp:67
IPv4Header
Definition ipv4.h:49
Definition vfs.h:95
Definition list.h:46
Definition socket.h:101
int CreateTCPSocket()
Definition tcp.cpp:345
__declspec(align(2)) typedef struct _tcphead_
Definition tcp.h:54
list_t * TCPGetSocketList()
Definition tcp.cpp:379
void TCPProtocolInstall()
Definition tcp.cpp:386
TCPHeader
Definition tcp.h:64
int AuTCPAcknowledge(AuVFSNode *nic, AuSocket *sock, IPv4Header *ippack, size_t payloadLen)
Definition tcp.cpp:161