X-Git-Url: http://sjero.net/git/?a=blobdiff_plain;f=dccp2tcp.h;h=d8615c2173e7b6ff7e066aed09f0257e6534f469;hb=5e3bc5722d048a5b9581cbe27c64de5048d444b0;hp=dafaeac8158b442a0179ad5f69f7d4b8de455988;hpb=20f1a0d4c106ab4927e9b1c1ad097fbb9179eae7;p=dccp2tcp diff --git a/dccp2tcp.h b/dccp2tcp.h index dafaeac..d8615c2 100644 --- a/dccp2tcp.h +++ b/dccp2tcp.h @@ -56,8 +56,11 @@ Notes: #define MAX_PACKET 1600 /*Maximum size of TCP packet */ #define TBL_SZ 40000 /*Size of Sequence Number Table*/ + #define TRUE 1 #define FALSE 0 +typedef __be16 dccp_port; +typedef __be32 d_seq_num; /*Packet structure*/ struct packet{ @@ -67,6 +70,7 @@ struct packet{ int id_len; /*Length of IDs*/ u_char *src_id; /*Source ID of packet*/ u_char *dest_id;/*Destination ID of packet*/ + char* (*print_id)(char* buf, int len, u_char* id, int id_len); /*Function to print ID*/ }; /*Constant Packet structure*/ @@ -77,6 +81,7 @@ struct const_packet{ int id_len; /*Length of IDs*/ u_char *src_id; /*Source ID of packet*/ u_char *dest_id;/*Destination ID of packet*/ + char* (*print_id)(char* buf, int len, u_char* id, int id_len); /*Function to print ID*/ }; /*Connection states*/ @@ -84,6 +89,8 @@ enum con_state{ INIT, OPEN, CLOSE, + DEAD, + IGNORE, }; /*Connection Types (i.e. CCID)*/ @@ -97,7 +104,7 @@ enum con_type{ struct hcon{ int id_len; /*Length of ID*/ u_char *id; /*Host ID*/ - __be16 port; /*Host DCCP port*/ + dccp_port port; /*Host DCCP port*/ struct tbl *table; /*Host Sequence Number Table*/ int size; /*Size of Sequence Number Table*/ int cur; /*Current TCP Sequence Number*/ @@ -115,7 +122,7 @@ struct connection{ /*sequence number table structure */ struct tbl{ - __be32 old; /*DCCP sequence number */ + d_seq_num old; /*DCCP sequence number */ u_int32_t new; /*TCP sequence number */ int size; /*packet size*/ enum dccp_pkt_type type; /*packet type*/ @@ -142,17 +149,17 @@ int do_encap(int link, struct packet *new, const struct const_packet *old); /*Connection functions*/ int get_host(u_char *src_id, u_char* dest_id, int id_len, int src_port, int dest_port, - struct hcon **fwd, struct hcon **rev); + enum dccp_pkt_type pkt_type, struct hcon **fwd, struct hcon **rev); struct connection *add_connection(u_char *src_id, u_char* dest_id, int id_len, int src_port, int dest_port); int update_state(struct hcon* hst, enum con_state st); void cleanup_connections(); /*Half Connection/Sequence number functions*/ -u_int32_t initialize_hcon(struct hcon *hcn, __be32 initial); -u_int32_t add_new_seq(struct hcon *hcn, __be32 num, int size, enum dccp_pkt_type type); -u_int32_t convert_ack(struct hcon *hcn, __be32 num, struct hcon *o_hcn); -int acked_packet_size(struct hcon *hcn, __be32 num); +u_int32_t initialize_hcon(struct hcon *hcn, d_seq_num initial); +u_int32_t add_new_seq(struct hcon *hcn, d_seq_num num, int size, enum dccp_pkt_type type); +u_int32_t convert_ack(struct hcon *hcn, d_seq_num num, struct hcon *o_hcn); +int acked_packet_size(struct hcon *hcn, d_seq_num num); unsigned int interp_ack_vect(u_char* hdr); #endif