It seems that "struct ether_header" was 2 bytes too long, and with attribute packed it works fine on my NSLU2.
diff -ru arpwatch-2.1a13/linux-include/netinet/if_ether.h 
arpwatch-2.1a13.ok/linux-include/netinet/if_ether.h
--- arpwatch-2.1a13/linux-include/netinet/if_ether.h    1996-11-29 
11:33:14.000000000 +0100
+++ arpwatch-2.1a13.ok/linux-include/netinet/if_ether.h 2008-07-09 
23:58:00.000000000 +0200
@@ -49,7 +49,7 @@
        u_char  ether_dhost[6];
        u_char  ether_shost[6];
        u_short ether_type;
-};
+} __attribute__((__packed__));
 
 #define        ETHERTYPE_PUP           0x0200  /* PUP protocol */
 #define        ETHERTYPE_IP            0x0800  /* IP protocol */

Reply via email to