#include <linux/module.h>
 
 static int ebt_mac_wormhash_contains(const struct ebt_mac_wormhash *wh,
-                                    const char *mac, uint32_t ip)
+                                    const char *mac, __be32 ip)
 {
        /* You may be puzzled as to how this code works.
         * Some tricks were used, refer to 
        return 0;
 }
 
-static int get_ip_dst(const struct sk_buff *skb, uint32_t *addr)
+static int get_ip_dst(const struct sk_buff *skb, __be32 *addr)
 {
        if (eth_hdr(skb)->h_proto == htons(ETH_P_IP)) {
                struct iphdr _iph, *ih;
                *addr = ih->daddr;
        } else if (eth_hdr(skb)->h_proto == htons(ETH_P_ARP)) {
                struct arphdr _arph, *ah;
-               uint32_t buf, *bp;
+               __be32 buf, *bp;
 
                ah = skb_header_pointer(skb, 0, sizeof(_arph), &_arph);
                if (ah == NULL ||
-                   ah->ar_pln != sizeof(uint32_t) ||
+                   ah->ar_pln != sizeof(__be32) ||
                    ah->ar_hln != ETH_ALEN)
                        return -1;
                bp = skb_header_pointer(skb, sizeof(struct arphdr) +
-                                       2 * ETH_ALEN + sizeof(uint32_t),
-                                       sizeof(uint32_t), &buf);
+                                       2 * ETH_ALEN + sizeof(__be32),
+                                       sizeof(__be32), &buf);
                if (bp == NULL)
                        return -1;
                *addr = *bp;
        return 0;
 }
 
-static int get_ip_src(const struct sk_buff *skb, uint32_t *addr)
+static int get_ip_src(const struct sk_buff *skb, __be32 *addr)
 {
        if (eth_hdr(skb)->h_proto == htons(ETH_P_IP)) {
                struct iphdr _iph, *ih;
                *addr = ih->saddr;
        } else if (eth_hdr(skb)->h_proto == htons(ETH_P_ARP)) {
                struct arphdr _arph, *ah;
-               uint32_t buf, *bp;
+               __be32 buf, *bp;
 
                ah = skb_header_pointer(skb, 0, sizeof(_arph), &_arph);
                if (ah == NULL ||
-                   ah->ar_pln != sizeof(uint32_t) ||
+                   ah->ar_pln != sizeof(__be32) ||
                    ah->ar_hln != ETH_ALEN)
                        return -1;
                bp = skb_header_pointer(skb, sizeof(struct arphdr) +
-                                       ETH_ALEN, sizeof(uint32_t), &buf);
+                                       ETH_ALEN, sizeof(__be32), &buf);
                if (bp == NULL)
                        return -1;
                *addr = *bp;
        struct ebt_among_info *info = (struct ebt_among_info *) data;
        const char *dmac, *smac;
        const struct ebt_mac_wormhash *wh_dst, *wh_src;
-       uint32_t dip = 0, sip = 0;
+       __be32 dip = 0, sip = 0;
 
        wh_dst = ebt_among_wh_dst(info);
        wh_src = ebt_among_wh_src(info);
 
                return EBT_NOMATCH;
 
        if (info->bitmask & (EBT_ARP_SRC_IP | EBT_ARP_DST_IP)) {
-               uint32_t _addr, *ap;
+               __be32 _addr, *ap;
 
                /* IPv4 addresses are always 4 bytes */
-               if (ah->ar_pln != sizeof(uint32_t))
+               if (ah->ar_pln != sizeof(__be32))
                        return EBT_NOMATCH;
                if (info->bitmask & EBT_ARP_SRC_IP) {
                        ap = skb_header_pointer(skb, sizeof(struct arphdr) +
 
                if (info->bitmask & EBT_ARP_DST_IP) {
                        ap = skb_header_pointer(skb, sizeof(struct arphdr) +
-                                               2*ah->ar_hln+sizeof(uint32_t),
+                                               2*ah->ar_hln+sizeof(__be32),
                                                sizeof(_addr), &_addr);
                        if (ap == NULL)
                                return EBT_NOMATCH;