--- a/eth_proto.c Sun Sep 30 18:34:48 2007 +0200
+++ b/eth_proto.c Sun Sep 30 18:42:11 2007 +0200
@@ -33,7 +33,7 @@
enum {
MAXPACKET = 1000,
- HEAD = 10
+ HEAD = 9
};
static char eth_buffer[1000];
@@ -41,24 +41,21 @@
static void eth_fill_mac(unsigned char *mac, const char *str);
static int make_head(unsigned char *data, unsigned int seq, enum Control c,
- int size, unsigned char crc)
+ int size)
{
*((unsigned int *) data) = htonl(seq);
data[4] = (unsigned char) c;
*((unsigned int *)(data+5)) = htonl(size);
- data[9] = crc;
return HEAD;
}
static int parse_head(unsigned char *data, unsigned int *seq, enum Control *c,
- int *size, unsigned char *crc)
+ int *size)
{
*seq = ntohl( *((unsigned int*) data) );
*c = data[4];
if (size)
*size = ntohl(*((unsigned int *)(data+5)));
- if (crc)
- *crc = data[9];
return HEAD;
}
@@ -82,7 +79,7 @@
eth_fill_mac(edata.partner, command_line.c_param.server_address);
edata.partner_set = 1;
- make_head(eth_buffer, edata.seq_send, INIT, 0, 0);
+ make_head(eth_buffer, edata.seq_send, INIT, 0);
eth_send(command_line.eth_device, edata.partner, eth_buffer, HEAD);
edata.seq_send++;
}
@@ -90,24 +87,12 @@
return edata.socket;
}
-static unsigned char get_crc(const char *data, int size)
-{
- int i;
- unsigned char crc = 0;
- for (i=0; i < size; ++i, ++data)
- {
- crc ^= *data;
- }
- return crc;
-}
-
int eth_proto_recv(char *data, int size)
{
int res;
int seq;
enum Control c;
char partner[6];
- unsigned char crc;
if (edata.tmp_buffer_filled)
{
@@ -120,7 +105,7 @@
res = eth_recv(eth_buffer, sizeof(eth_buffer), partner);
edata.partner_set = 1;
} while(res < HEAD);
- parse_head(eth_buffer, &seq, &c, &res, &crc);
+ parse_head(eth_buffer, &seq, &c, &res);
/* We admit any first connection */
if (seq == 0 && c == INIT)
{
@@ -128,8 +113,7 @@
memcpy(edata.partner, partner, sizeof(edata.partner));
return -1; /* Nothing the parent should care about */
}
- if (seq != edata.seq_wait || c != SEND ||
- crc != get_crc(eth_buffer + HEAD, res) )
+ if (seq != edata.seq_wait || c != SEND)
{
edata.wrong_recv++;
return -1;
@@ -137,7 +121,7 @@
/* res comes from parse_head. */
memcpy(data, eth_buffer + HEAD, min(size, res));
- make_head(eth_buffer, seq, ACK, 0, 0);
+ make_head(eth_buffer, seq, ACK, 0);
eth_send(command_line.eth_device, edata.partner, eth_buffer, HEAD);
edata.seq_wait++;
@@ -173,7 +157,6 @@
int sent;
int rseq;
int res;
- unsigned char crc;
enum Control rc;
if (retries == 0)
@@ -184,8 +167,7 @@
once = min(sizeof(eth_buffer)-HEAD, size);
- crc = get_crc(data, once);
- make_head(eth_buffer, edata.seq_send, SEND, once, crc);
+ make_head(eth_buffer, edata.seq_send, SEND, once);
memcpy(eth_buffer+HEAD, data, once);
sent = eth_send(command_line.eth_device, edata.partner,
eth_buffer, once+HEAD);
@@ -204,7 +186,7 @@
unprogram_timeout();
retries = 3;
- parse_head(eth_buffer, &rseq, &rc, 0, 0);
+ parse_head(eth_buffer, &rseq, &rc, 0);
if (rc == SEND)
{
if (rseq != edata.seq_wait)