Diff for /ansh/src/utils.c between versions 1.4 and 1.5

version 1.4, 2012/07/22 22:41:33 version 1.5, 2015/05/19 23:25:30
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 128  PrepareL2(const char *psDev, int *bpflen) Line 128  PrepareL2(const char *psDev, int *bpflen)
 }  }
   
 int  int
PrepareL3(const io_sockaddr_t *sa, int *bpflen)PrepareL3(const sockaddr_t *sa, int *bpflen)
 {  {
         int h, n = 1;          int h, n = 1;
   
Line 163  PrepareL3(const io_sockaddr_t *sa, int *bpflen) Line 163  PrepareL3(const io_sockaddr_t *sa, int *bpflen)
   
 char  char
 icmpRecv(int s, u_int * __restrict seq, u_short * __restrict id, u_int * __restrict crypted,   icmpRecv(int s, u_int * __restrict seq, u_short * __restrict id, u_int * __restrict crypted, 
                u_char * __restrict data, int * __restrict datlen, io_sockaddr_t *sa, socklen_t *salen)                u_char * __restrict data, int * __restrict datlen, sockaddr_t *sa, socklen_t *salen)
 {  {
         int ret = 0;          int ret = 0;
         struct icmp *icmp;          struct icmp *icmp;
Line 237  icmpRecv(int s, u_int * __restrict seq, u_short * __re Line 237  icmpRecv(int s, u_int * __restrict seq, u_short * __re
   
 int  int
 icmpSend(int s, u_int seq, u_short id, char flg, u_int crypted, u_char *data, int datlen,   icmpSend(int s, u_int seq, u_short id, char flg, u_int crypted, u_char *data, int datlen, 
                io_sockaddr_t *sa, socklen_t salen)                sockaddr_t *sa, socklen_t salen)
 {  {
         u_char *pos, buf[USHRT_MAX] = { 0 };          u_char *pos, buf[USHRT_MAX] = { 0 };
         struct icmp *icmp;          struct icmp *icmp;
Line 285  icmpSend(int s, u_int seq, u_short id, char flg, u_int Line 285  icmpSend(int s, u_int seq, u_short id, char flg, u_int
 }  }
   
 static int  static int
_pkt_Send(int s, u_int seq, char flg, u_int crypted, u_char *data, int datlen, io_ether_addr_t *ea)_pkt_Send(int s, u_int seq, char flg, u_int crypted, u_char *data, int datlen, ether_addr_t *ea)
 {  {
         u_char *pos, *str, buf[USHRT_MAX] = { 0 };          u_char *pos, *str, buf[USHRT_MAX] = { 0 };
         struct ether_header *e = (struct ether_header*) buf;          struct ether_header *e = (struct ether_header*) buf;
Line 297  _pkt_Send(int s, u_int seq, char flg, u_int crypted, u Line 297  _pkt_Send(int s, u_int seq, char flg, u_int crypted, u
                 return ANSH_FLG_ERR;                  return ANSH_FLG_ERR;
   
         e->ether_type = ntohs(ANSH_ID);          e->ether_type = ntohs(ANSH_ID);
        memcpy(e->ether_dhost, ea->ether_addr_octet, ETHER_ADDR_LEN);        memcpy(e->ether_dhost, ea->octet, ETHER_ADDR_LEN);
         hdr = (struct ansh_hdr*) (buf + ETHER_HDR_LEN);          hdr = (struct ansh_hdr*) (buf + ETHER_HDR_LEN);
         pos = ((u_char*) hdr) + sizeof(struct ansh_hdr);          pos = ((u_char*) hdr) + sizeof(struct ansh_hdr);
   
Line 307  _pkt_Send(int s, u_int seq, char flg, u_int crypted, u Line 307  _pkt_Send(int s, u_int seq, char flg, u_int crypted, u
                 str = cryptBuffer(pos, datlen, Crypted);                  str = cryptBuffer(pos, datlen, Crypted);
                 if (str) {                  if (str) {
                         memcpy(pos, str, datlen);                          memcpy(pos, str, datlen);
                        io_free(str);                        e_free(str);
                 }                  }
         }          }
   
Line 334  _pkt_Send(int s, u_int seq, char flg, u_int crypted, u Line 334  _pkt_Send(int s, u_int seq, char flg, u_int crypted, u
 }  }
   
 int  int
pktSend(int s, u_int seq, char flg, u_int crypted, u_char *data, int datlen, struct io_ether_addr *ea)pktSend(int s, u_int seq, char flg, u_int crypted, u_char *data, int datlen, struct e_ether_addr *ea)
 {  {
         int wlen, ret = 0;          int wlen, ret = 0;
         u_char *pos = data;          u_char *pos = data;
Line 419  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _ Line 419  _pkt_Recv(u_char * __restrict buf, int rlen, u_int * _
                         if (str) {                          if (str) {
                                 memcpy(buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr),                                   memcpy(buf + bpf->bh_hdrlen + ETHER_HDR_LEN + sizeof(struct ansh_hdr), 
                                                 str, *datlen);                                                  str, *datlen);
                                io_free(str);                                e_free(str);
                         }                          }
                 }                  }
   
Line 446  pktRecv(int s, u_int * __restrict seq, u_int * __restr Line 446  pktRecv(int s, u_int * __restrict seq, u_int * __restr
         else          else
                 memset(data, 0, *datlen);                  memset(data, 0, *datlen);
   
        if (!(buf = io_malloc(*datlen))) {        if (!(buf = e_malloc(*datlen))) {
                 ERR("malloc() #%d - %s", errno, strerror(errno));                  ERR("malloc() #%d - %s", errno, strerror(errno));
                 return ANSH_FLG_ERR;                  return ANSH_FLG_ERR;
         }          }
Line 454  pktRecv(int s, u_int * __restrict seq, u_int * __restr Line 454  pktRecv(int s, u_int * __restrict seq, u_int * __restr
         rlen = read(s, buf, *datlen);          rlen = read(s, buf, *datlen);
         if (rlen == -1) {          if (rlen == -1) {
                 ERR("Receive packet() #%d - %s", errno, strerror(errno));                  ERR("Receive packet() #%d - %s", errno, strerror(errno));
                io_free(buf);                e_free(buf);
                 return ANSH_FLG_ERR;                  return ANSH_FLG_ERR;
         } else          } else
                 VERB(4) LOG("Get packet with len=%d", rlen);                  VERB(4) LOG("Get packet with len=%d", rlen);
Line 462  pktRecv(int s, u_int * __restrict seq, u_int * __restr Line 462  pktRecv(int s, u_int * __restrict seq, u_int * __restr
         /* check header len */          /* check header len */
         if (rlen < (sizeof(struct bpf_hdr) + ETHER_HDR_LEN + sizeof(struct ansh_hdr))) {          if (rlen < (sizeof(struct bpf_hdr) + ETHER_HDR_LEN + sizeof(struct ansh_hdr))) {
                 VERB(1) LOG("Discard packet too short %d ...", rlen);                  VERB(1) LOG("Discard packet too short %d ...", rlen);
                io_free(buf);                e_free(buf);
                 return ANSH_FLG_ERR;                  return ANSH_FLG_ERR;
         } else {          } else {
                 bpf = (struct bpf_hdr*) buf;                  bpf = (struct bpf_hdr*) buf;
Line 473  pktRecv(int s, u_int * __restrict seq, u_int * __restr Line 473  pktRecv(int s, u_int * __restrict seq, u_int * __restr
         ptr = next = buf;          ptr = next = buf;
         ptrlen = nextlen = rlen;          ptrlen = nextlen = rlen;
         if ((flg = _pkt_Recv(ptr, ptrlen, seq, crypted, pos, &buflen, &next, &nextlen)) == -1) {          if ((flg = _pkt_Recv(ptr, ptrlen, seq, crypted, pos, &buflen, &next, &nextlen)) == -1) {
                io_free(buf);                e_free(buf);
                 return ANSH_FLG_ERR;                  return ANSH_FLG_ERR;
         } else {          } else {
                 pos += buflen;                  pos += buflen;
Line 492  pktRecv(int s, u_int * __restrict seq, u_int * __restr Line 492  pktRecv(int s, u_int * __restrict seq, u_int * __restr
                         ptrlen = nextlen;                          ptrlen = nextlen;
                 }                  }
   
        io_free(buf);        e_free(buf);
   
         return flg;          return flg;
 }  }

Removed from v.1.4  
changed lines
  Added in v.1.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>