summaryrefslogtreecommitdiff
path: root/mactelnet.h
diff options
context:
space:
mode:
authorHåkon Nessjøen <haakon.nessjoen@gmail.com>2010-10-03 02:44:37 +0200
committerHåkon Nessjøen <haakon.nessjoen@gmail.com>2010-10-03 02:44:37 +0200
commit065bb72362c52603bd615b0a69e24a6f00f03932 (patch)
tree9025d98957328c9868b0050d671260d897e33dd2 /mactelnet.h
parenta64b7069f5144dbd2e76f3a9d104d63ca64c7cd1 (diff)
downloadMAC-Telnet-065bb72362c52603bd615b0a69e24a6f00f03932.tar.gz
MAC-Telnet-065bb72362c52603bd615b0a69e24a6f00f03932.zip
Changed how packet generation functions get access to the buffer, so they won't let you overflow the buffer, and they will keep track of the packet size "internally".
Diffstat (limited to 'mactelnet.h')
-rw-r--r--mactelnet.h11
1 files changed, 9 insertions, 2 deletions
diff --git a/mactelnet.h b/mactelnet.h
index 2a62353..d992de4 100644
--- a/mactelnet.h
+++ b/mactelnet.h
@@ -22,6 +22,8 @@
#define MT_HEADER_LEN 22
#define MT_CPHEADER_LEN 9
+#define MT_PACKET_LEN 1500
+
/* Packet type */
#define MT_PTYPE_SESSIONSTART 0
#define MT_PTYPE_DATA 1
@@ -58,8 +60,13 @@ struct mt_mactelnet_control_hdr {
unsigned char *data;
};
-extern int initPacket(unsigned char *data, unsigned char ptype, unsigned char *srcmac, unsigned char *dstmac, unsigned short sessionkey, unsigned short counter);
-extern int addControlPacket(unsigned char *data, unsigned char cptype, void *cpdata, int data_len);
+struct mt_packet {
+ int size;
+ unsigned char data[MT_PACKET_LEN];
+};
+
+extern int initPacket(struct mt_packet *packet, unsigned char ptype, unsigned char *srcmac, unsigned char *dstmac, unsigned short sessionkey, unsigned short counter);
+extern int addControlPacket(struct mt_packet *packet, char cptype, void *cpdata, int data_len);
extern void parsePacket(unsigned char *data, struct mt_mactelnet_hdr *pkthdr);
extern int parseControlPacket(unsigned char *data, const int data_len, struct mt_mactelnet_control_hdr *cpkthdr);