static void dccp_print(const void *ip, const struct xt_entry_match *match, int numeric) { const struct xt_dccp_info *einfo = (const struct xt_dccp_info *)match->data; printf(" dccp"); if (einfo->flags & XT_DCCP_SRC_PORTS) { print_ports("spt", einfo->spts[0], einfo->spts[1], einfo->invflags & XT_DCCP_SRC_PORTS, numeric); } if (einfo->flags & XT_DCCP_DEST_PORTS) { print_ports("dpt", einfo->dpts[0], einfo->dpts[1], einfo->invflags & XT_DCCP_DEST_PORTS, numeric); } if (einfo->flags & XT_DCCP_TYPE) { print_types(einfo->typemask, einfo->invflags & XT_DCCP_TYPE, numeric); } if (einfo->flags & XT_DCCP_OPTION) { print_option(einfo->option, einfo->invflags & XT_DCCP_OPTION, numeric); } }
static void udp_print(const void *ip, const struct xt_entry_match *match, int numeric) { const struct xt_udp *udp = (struct xt_udp *)match->data; printf(" udp"); print_ports("spt", udp->spts[0], udp->spts[1], udp->invflags & XT_UDP_INV_SRCPT, numeric); print_ports("dpt", udp->dpts[0], udp->dpts[1], udp->invflags & XT_UDP_INV_DSTPT, numeric); if (udp->invflags & ~XT_UDP_INV_MASK) printf(" Unknown invflags: 0x%X", udp->invflags & ~XT_UDP_INV_MASK); }
static void tcp_print(const void *ip, const struct xt_entry_match *match, int numeric) { const struct xt_tcp *tcp = (struct xt_tcp *)match->data; printf("tcp "); print_ports("spt", tcp->spts[0], tcp->spts[1], tcp->invflags & XT_TCP_INV_SRCPT, numeric); print_ports("dpt", tcp->dpts[0], tcp->dpts[1], tcp->invflags & XT_TCP_INV_DSTPT, numeric); print_option(tcp->option, tcp->invflags & XT_TCP_INV_OPTION, numeric); print_flags(tcp->flg_mask, tcp->flg_cmp, tcp->invflags & XT_TCP_INV_FLAGS, numeric); if (tcp->invflags & ~XT_TCP_INV_MASK) printf("Unknown invflags: 0x%X ", tcp->invflags & ~XT_TCP_INV_MASK); }
static void rule_print (const struct rule *r, const struct tf *tf) { printf ("Rule %u\nIn: ", r->idx); print_ports (r->in, tf); printf ("Out: "); print_ports (r->out, tf); if (r->match) { char *match = array_to_str (DATA_ARR (r->match), data_arrs_len, true); printf ("Match: %s\n", match); free (match); if (r->mask) { char *mask = array_to_str (DATA_ARR (r->mask), data_arrs_len, false); char *rewrite = array_to_str (DATA_ARR (r->rewrite), data_arrs_len, false); printf ("Mask: %s\nRewrite: %s\n", mask, rewrite); free (mask); free (rewrite); } //printf ("Deps:\n"); //deps_print (r->deps); } printf ("-----\n"); }
static void render_with_delta(struct traffic_visualizer * self, float delta) { int i; self->p->accumulator += delta; if (self->p->accumulator < STEP_TIME) { return; } self->p->accumulator = 0.0f; for (i = 0; i < self->p->num_ports; ++i) { struct port * port = &self->p->ports[i]; clear_printed_packets(port->packets, PACKETS_PER_PORT, self->p->offset_y, self->p->offset_x); } step(self, STEP_TIME); for (i = 0; i < self->p->num_ports; ++i) { struct port * port = &self->p->ports[i]; print_packets(port->packets, PACKETS_PER_PORT, self->p->rx_color_pair, self->p->tx_color_pair, self->p->offset_y, self->p->offset_x); } print_ports(self->p->ports, self->p->num_ports, self->p->offset_y, self->p->offset_x); }
static void ebt_log_packet(u_int8_t pf, unsigned int hooknum, const struct sk_buff *skb, const struct net_device *in, const struct net_device *out, const struct nf_loginfo *loginfo, const char *prefix) { unsigned int bitmask; spin_lock_bh(&ebt_log_lock); printk("<%c>%s IN=%s OUT=%s MAC source = %pM MAC dest = %pM proto = 0x%04x", '0' + loginfo->u.log.level, prefix, in ? in->name : "", out ? out->name : "", eth_hdr(skb)->h_source, eth_hdr(skb)->h_dest, ntohs(eth_hdr(skb)->h_proto)); if (loginfo->type == NF_LOG_TYPE_LOG) bitmask = loginfo->u.log.logflags; else bitmask = NF_LOG_MASK; if ((bitmask & EBT_LOG_IP) && eth_hdr(skb)->h_proto == htons(ETH_P_IP)){ const struct iphdr *ih; struct iphdr _iph; ih = skb_header_pointer(skb, 0, sizeof(_iph), &_iph); if (ih == NULL) { printk(" INCOMPLETE IP header"); goto out; } printk(" IP SRC=%pI4 IP DST=%pI4, IP tos=0x%02X, IP proto=%d", &ih->saddr, &ih->daddr, ih->tos, ih->protocol); print_ports(skb, ih->protocol, ih->ihl*4); goto out; } #if defined(CONFIG_BRIDGE_EBT_IP6) || defined(CONFIG_BRIDGE_EBT_IP6_MODULE) if ((bitmask & EBT_LOG_IP6) && eth_hdr(skb)->h_proto == htons(ETH_P_IPV6)) { const struct ipv6hdr *ih; struct ipv6hdr _iph; uint8_t nexthdr; int offset_ph; ih = skb_header_pointer(skb, 0, sizeof(_iph), &_iph); if (ih == NULL) { printk(" INCOMPLETE IPv6 header"); goto out; } printk(" IPv6 SRC=%pI6 IPv6 DST=%pI6, IPv6 priority=0x%01X, Next Header=%d", &ih->saddr, &ih->daddr, ih->priority, ih->nexthdr); nexthdr = ih->nexthdr; offset_ph = ipv6_skip_exthdr(skb, sizeof(_iph), &nexthdr); if (offset_ph == -1) goto out; print_ports(skb, nexthdr, offset_ph); goto out; } #endif if ((bitmask & EBT_LOG_ARP) && ((eth_hdr(skb)->h_proto == htons(ETH_P_ARP)) || (eth_hdr(skb)->h_proto == htons(ETH_P_RARP)))) { const struct arphdr *ah; struct arphdr _arph; ah = skb_header_pointer(skb, 0, sizeof(_arph), &_arph); if (ah == NULL) { printk(" INCOMPLETE ARP header"); goto out; } printk(" ARP HTYPE=%d, PTYPE=0x%04x, OPCODE=%d", ntohs(ah->ar_hrd), ntohs(ah->ar_pro), ntohs(ah->ar_op)); /* If it's for Ethernet and the lengths are OK, * then log the ARP payload */ if (ah->ar_hrd == htons(1) && ah->ar_hln == ETH_ALEN && ah->ar_pln == sizeof(__be32)) { const struct arppayload *ap; struct arppayload _arpp; ap = skb_header_pointer(skb, sizeof(_arph), sizeof(_arpp), &_arpp); if (ap == NULL) { printk(" INCOMPLETE ARP payload"); goto out; } printk(" ARP MAC SRC=%pM ARP IP SRC=%pI4 ARP MAC DST=%pM ARP IP DST=%pI4", ap->mac_src, ap->ip_src, ap->mac_dst, ap->ip_dst); } } out: printk("\n"); spin_unlock_bh(&ebt_log_lock); }