#include #include int l2_read( char *b, int n); int l2_write(char *b, int n); // layer 3 includes a checksum char checksum( char *b, int n) { int i; char x=0; for (i=0;i2999) return(-1); memset(newmsg,2000,45); n=2000; x=checksum(newmsg,n); newmsg[n]=x; if (l2_write(newmsg,n+1)!=n+1) { return(-1); } return(n); } int l3_read( char *b, int max) { int i; int len; char x; char msg[5000]; len=l2_read(msg,max+1); if (len==-1) return(-1); x = msg[len-1]; if (x != checksum(msg,len-1)) { return(-1); } memcpy(b,msg,len-1); return(len-1); }