Bläddra i källkod

use unsigned char for packet data

Jindrich Makovicka 16 år sedan
förälder
incheckning
6c727a057a
1 ändrade filer med 12 tillägg och 12 borttagningar
  1. 12 12
      pinger.c

+ 12 - 12
pinger.c

@@ -85,7 +85,7 @@ typedef struct _host_data {
         struct icmp v4;
         struct icmp6_hdr v6;
     } icmp;
-    char rcvd_tbl[MAX_DUP_CHK / 8];
+    u_char rcvd_tbl[MAX_DUP_CHK / 8];
     int phase;
     int counter;
     int updatefreq;
@@ -144,10 +144,10 @@ static gint compare_delay(gconstpointer a, gconstpointer b)
  * in_cksum --
  *      Checksum routine for Internet Protocol family headers (C Version)
  */
-static int in_cksum(u_short * addr, int len)
+static int in_cksum(u_char * addr, int len)
 {
     int nleft = len;
-    u_short *w = addr;
+    u_short *w = (u_short *)addr;
     int sum = 0;
     u_short answer = 0;
 
@@ -253,9 +253,9 @@ static void pinger4(host_data * h)
     set_packet_data(icp->icmp_data, h);
 
     /* compute ICMP checksum here */
-    icp->icmp_cksum = in_cksum((u_short *) icp, sizeof(outpack));
+    icp->icmp_cksum = in_cksum(outpack, sizeof(outpack));
 
-    i = sendto(icmp_socket, (char *) outpack, sizeof(outpack), 0,
+    i = sendto(icmp_socket, outpack, sizeof(outpack), 0,
                (struct sockaddr *)&h->addr, sizeof(h->addr));
 
     if (i < 0 || i != sizeof(outpack)) {
@@ -285,7 +285,7 @@ static void pinger6(host_data * h)
 
     set_packet_data(outpack + sizeof(*icmp), h);
 
-    i = sendto(icmp6_socket, (char *) outpack, sizeof(outpack), 0,
+    i = sendto(icmp6_socket, outpack, sizeof(outpack), 0,
                &h->addr.addr, sizeof(struct sockaddr_in6));
 
     if (i < 0 || i != sizeof(outpack)) {
@@ -554,7 +554,7 @@ static void tvsub(struct timeval *out, struct timeval *in)
 }
 
 // process a received packet
-void pr_pack(char *buf, int cc, struct sockaddr_in *from)
+void pr_pack(u_char *buf, int cc, struct sockaddr_in *from)
 {
     struct icmp *icp;
     struct ip *ip;
@@ -623,7 +623,7 @@ void pr_pack(char *buf, int cc, struct sockaddr_in *from)
 }
 
 // process a received packet
-void pr_pack6(char *buf, int cc, struct sockaddr_in6 *from)
+void pr_pack6(u_char *buf, int cc, struct sockaddr_in6 *from)
 {
     struct icmp6_hdr *icmp;
     u_char *data;
@@ -883,22 +883,22 @@ void receiver()
             if (FD_ISSET(icmp_socket, &rfds)) {
                 struct sockaddr_in from;
                 fromlen = sizeof(from);
-                if ((cc = recvfrom(icmp_socket, (char *) packet, sizeof(packet), 0,
+                if ((cc = recvfrom(icmp_socket, packet, sizeof(packet), 0,
                                    (struct sockaddr *) &from, &fromlen)) < 0) {
                     if (errno != EAGAIN)
                         perror("pinger: recvfrom");
                 } else {
-                    pr_pack((char *) packet, cc, &from);
+                    pr_pack(packet, cc, &from);
                 }
             } else if (FD_ISSET(icmp6_socket, &rfds)) {
                 struct sockaddr_in6 from;
                 fromlen = sizeof(from);
-                if ((cc = recvfrom(icmp6_socket, (char *) packet, sizeof(packet), 0,
+                if ((cc = recvfrom(icmp6_socket, packet, sizeof(packet), 0,
                                    (struct sockaddr *) &from, &fromlen)) < 0) {
                     if (errno != EAGAIN)
                         perror("pinger: recvfrom");
                 } else {
-                    pr_pack6((char *) packet, cc, &from);
+                    pr_pack6(packet, cc, &from);
                 }
             }
         }