static void print_d(const struct ebt_u_entry *entry, const struct ebt_entry_target *target) { struct ebt_nat_info *natinfo = (struct ebt_nat_info *)target->data; printf("--to-dst "); ebt_print_mac(natinfo->mac); printf(" --dnat-target %s", TARGET_NAME(natinfo->target)); }
static void print_s(const struct ebt_u_entry *entry, const struct ebt_entry_target *target) { struct ebt_nat_info *natinfo = (struct ebt_nat_info *)target->data; printf("--to-src "); ebt_print_mac(natinfo->mac); if (!(natinfo->target&NAT_ARP_BIT)) printf(" --snat-arp"); printf(" --snat-target %s", TARGET_NAME((natinfo->target|~EBT_VERDICT_BITS))); }
static void print(const struct ebt_u_entry *entry, const struct ebt_entry_target *target) { struct ebt_arpreply_info *replyinfo = (struct ebt_arpreply_info *)target->data; printf("--arpreply-mac "); ebt_print_mac(replyinfo->mac); if (replyinfo->target == EBT_DROP) return; printf(" --arpreply-target %s", TARGET_NAME(replyinfo->target)); }
void ebt_print_mac_and_mask(const unsigned char *mac, const unsigned char *mask) { char hlpmsk[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; if (!memcmp(mac, mac_type_unicast, 6) && !memcmp(mask, msk_type_unicast, 6)) printf("Unicast"); else if (!memcmp(mac, mac_type_multicast, 6) && !memcmp(mask, msk_type_multicast, 6)) printf("Multicast"); else if (!memcmp(mac, mac_type_broadcast, 6) && !memcmp(mask, msk_type_broadcast, 6)) printf("Broadcast"); else if (!memcmp(mac, mac_type_bridge_group, 6) && !memcmp(mask, msk_type_bridge_group, 6)) printf("BGA"); else { ebt_print_mac(mac); if (memcmp(mask, hlpmsk, 6)) { printf("/"); ebt_print_mac(mask); } } }
static void wormhash_printout(const struct ebt_mac_wormhash *wh) { int i; unsigned char *ip; for (i = 0; i < wh->poolsize; i++) { const struct ebt_mac_wormhash_tuple *p; p = (const struct ebt_mac_wormhash_tuple *)(&wh->pool[i]); ebt_print_mac(((const unsigned char *) &p->cmp[0]) + 2); if (p->ip) { ip = (unsigned char *) &p->ip; printf("=%u.%u.%u.%u", ip[0], ip[1], ip[2], ip[3]); } printf(","); } printf(" "); }