Diff for /ansh/src/utils.c between versions 1.2 and 1.3

version 1.2, 2011/10/17 20:14:02 version 1.3, 2012/01/23 10:34:13
Line 128  PrepareL2(const char *psDev, int *bpflen) Line 128  PrepareL2(const char *psDev, int *bpflen)
 }  }
   
 int  int
PrepareL3(const struct sockaddr *sa, int *bpflen)PrepareL3(const io_sockaddr_t *sa, int *bpflen)
 {  {
         int h, n = 1;          int h, n = 1;
   
         FTRACE(3);          FTRACE(3);
         assert(sa);          assert(sa);
   
        h = socket(sa->sa_family, SOCK_RAW, IPPROTO_ICMP);        h = socket(sa->sa.sa_family ? sa->sa.sa_family : AF_INET, SOCK_RAW, IPPROTO_ICMP);
         if (h == -1) {          if (h == -1) {
                 printf("Error:: Cant open raw socket #%d - %s\n", errno, strerror(errno));                  printf("Error:: Cant open raw socket #%d - %s\n", errno, strerror(errno));
                 return -1;                  return -1;
Line 147  PrepareL3(const struct sockaddr *sa, int *bpflen) Line 147  PrepareL3(const struct sockaddr *sa, int *bpflen)
                 return -1;                  return -1;
         }          }
         */          */
        if (bind(h, sa, sizeof(struct sockaddr)) == -1) {        if (sa->sa.sa_family && bind(h, &sa->sa, sa->sa.sa_len) == -1) {
                 printf("Error:: Cant bind to raw socket #%d - %s\n", errno, strerror(errno));                  printf("Error:: Cant bind to raw socket #%d - %s\n", errno, strerror(errno));
                 close(h);                  close(h);
                 return -1;                  return -1;
Line 163  PrepareL3(const struct sockaddr *sa, int *bpflen) Line 163  PrepareL3(const struct sockaddr *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, struct sockaddr *sa, socklen_t *salen)                u_char * __restrict data, int * __restrict datlen, io_sockaddr_t *sa, socklen_t *salen)
 {  {
         int ret = 0;          int ret = 0;
         struct icmp *icmp;          struct icmp *icmp;
Line 171  icmpRecv(int s, u_int * __restrict seq, u_short * __re Line 171  icmpRecv(int s, u_int * __restrict seq, u_short * __re
         u_char buf[USHRT_MAX] = { 0 };          u_char buf[USHRT_MAX] = { 0 };
         u_int crc;          u_int crc;
   
        ret = recvfrom(s, buf, sizeof buf, 0, sa, salen);        ret = recvfrom(s, buf, sizeof buf, 0, &sa->sa, salen);
         if (ret == -1) {          if (ret == -1) {
                 ERR("Receive recvfrom() #%d - %s", errno, strerror(errno));                  ERR("Receive recvfrom() #%d - %s", errno, strerror(errno));
                 return ANSH_FLG_ERR;                  return ANSH_FLG_ERR;
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, 
                struct sockaddr *sa, socklen_t salen)                io_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 270  icmpSend(int s, u_int seq, u_short id, char flg, u_int Line 270  icmpSend(int s, u_int seq, u_short id, char flg, u_int
         icmp->icmp_cksum = crcIP(buf, sizeof(struct icmp) + sizeof(struct ansh_hdr) + datlen);          icmp->icmp_cksum = crcIP(buf, sizeof(struct icmp) + sizeof(struct ansh_hdr) + datlen);
   
         if ((ret = sendto(s, buf, sizeof(struct icmp) + sizeof(struct ansh_hdr) + datlen,           if ((ret = sendto(s, buf, sizeof(struct icmp) + sizeof(struct ansh_hdr) + datlen, 
                                        0, sa, salen)) == -1) {                                        0, &sa->sa, salen)) == -1) {
                 ERR("Send sendto() #%d - %s", errno, strerror(errno));                  ERR("Send sendto() #%d - %s", errno, strerror(errno));
                 return ANSH_FLG_ERR;                  return ANSH_FLG_ERR;
         } else          } else
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, struct io_ether_addr *ea)_pkt_Send(int s, u_int seq, char flg, u_int crypted, u_char *data, int datlen, io_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;

Removed from v.1.2  
changed lines
  Added in v.1.3


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