#if 0
#define NETDEBUG(x) do { } while (0)
+#define LIMIT_NETDEBUG(x) do {} while(0)
#else
#define NETDEBUG(x) do { x; } while (0)
+#define LIMIT_NETDEBUG(x) do { if (net_ratelimit()) { x; } } while(0)
#endif
/*
x = xfrm_state_lookup((xfrm_address_t *)&iph->daddr, esph->spi, IPPROTO_ESP, AF_INET);
if (!x)
return;
- printk(KERN_DEBUG "pmtu discovery on SA ESP/%08x/%08x\n",
- ntohl(esph->spi), ntohl(iph->daddr));
+ NETDEBUG(printk(KERN_DEBUG "pmtu discovery on SA ESP/%08x/%08x\n",
+ ntohl(esph->spi), ntohl(iph->daddr)));
xfrm_state_put(x);
}
if (aalg_desc->uinfo.auth.icv_fullbits/8 !=
crypto_tfm_alg_digestsize(esp->auth.tfm)) {
- printk(KERN_INFO "ESP: %s digestsize %u != %hu\n",
+ NETDEBUG(printk(KERN_INFO "ESP: %s digestsize %u != %hu\n",
x->aalg->alg_name,
crypto_tfm_alg_digestsize(esp->auth.tfm),
- aalg_desc->uinfo.auth.icv_fullbits/8);
+ aalg_desc->uinfo.auth.icv_fullbits/8));
goto error;
}
break;
case ICMP_FRAG_NEEDED:
if (ipv4_config.no_pmtu_disc) {
- if (net_ratelimit())
+ LIMIT_NETDEBUG(
printk(KERN_INFO "ICMP: %u.%u.%u.%u: "
"fragmentation needed "
"and DF set.\n",
- NIPQUAD(iph->daddr));
+ NIPQUAD(iph->daddr)));
} else {
info = ip_rt_frag_needed(iph,
ntohs(icmph->un.frag.mtu));
}
break;
case ICMP_SR_FAILED:
- if (net_ratelimit())
+ LIMIT_NETDEBUG(
printk(KERN_INFO "ICMP: %u.%u.%u.%u: Source "
"Route Failed.\n",
- NIPQUAD(iph->daddr));
+ NIPQUAD(iph->daddr)));
break;
default:
break;
spi, IPPROTO_COMP, AF_INET);
if (!x)
return;
- printk(KERN_DEBUG "pmtu discovery on SA IPCOMP/%08x/%u.%u.%u.%u\n",
- spi, NIPQUAD(iph->daddr));
+ NETDEBUG(printk(KERN_DEBUG "pmtu discovery on SA IPCOMP/%08x/%u.%u.%u.%u\n",
+ spi, NIPQUAD(iph->daddr)));
xfrm_state_put(x);
}
*nh_offset = offset;
offset += ipv6_optlen(exthdr);
if (!zero_out_mutable_opts(exthdr)) {
- if (net_ratelimit())
- printk(KERN_WARNING "overrun hopopts\n");
+ LIMIT_NETDEBUG(
+ printk(KERN_WARNING "overrun hopopts\n"));
return 0;
}
nexthdr = exthdr->nexthdr;
*nh_offset = offset;
offset += ipv6_optlen(exthdr);
if (!zero_out_mutable_opts(exthdr)) {
- if (net_ratelimit())
- printk(KERN_WARNING "overrun destopt\n");
+ LIMIT_NETDEBUG(
+ printk(KERN_WARNING "overrun destopt\n"));
return 0;
}
nexthdr = exthdr->nexthdr;
exthdr = (struct ipv6_opt_hdr*)(skb->nh.raw + offset);
nextnexthdr = exthdr->nexthdr;
if (!zero_out_mutable_opts(exthdr)) {
- if (net_ratelimit())
- printk(KERN_WARNING "overrun destopt\n");
+ LIMIT_NETDEBUG(
+ printk(KERN_WARNING "overrun destopt\n"));
return 0;
}
}
skb_push(skb, skb->data - skb->nh.raw);
ahp->icv(ahp, skb, ah->auth_data);
if (memcmp(ah->auth_data, auth_data, ahp->icv_trunc_len)) {
- if (net_ratelimit())
- printk(KERN_WARNING "ipsec ah authentication error\n");
+ LIMIT_NETDEBUG(
+ printk(KERN_WARNING "ipsec ah authentication error\n"));
x->stats.integrity_failed++;
goto free_out;
}
if (!x)
return;
- printk(KERN_DEBUG "pmtu discovery on SA AH/%08x/"
+ NETDEBUG(printk(KERN_DEBUG "pmtu discovery on SA AH/%08x/"
"%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x\n",
- ntohl(ah->spi), NIP6(iph->daddr));
+ ntohl(ah->spi), NIP6(iph->daddr)));
xfrm_state_put(x);
}
break;
default:
- if (net_ratelimit())
- printk(KERN_DEBUG "invalid cmsg type: %d\n", cmsg->cmsg_type);
+ LIMIT_NETDEBUG(
+ printk(KERN_DEBUG "invalid cmsg type: %d\n", cmsg->cmsg_type));
err = -EINVAL;
break;
};
padlen = nexthdr[0];
if (padlen+2 >= elen) {
- if (net_ratelimit()) {
+ LIMIT_NETDEBUG(
printk(KERN_WARNING "ipsec esp packet is garbage padlen=%d, elen=%d\n", padlen+2, elen);
- }
+ });
ret = -EINVAL;
goto out;
}
((struct inet6_skb_parm*)skb->cb)->ra = optoff;
return 1;
}
- if (net_ratelimit())
- printk(KERN_DEBUG "ipv6_hop_ra: wrong RA length %d\n", skb->nh.raw[optoff+1]);
+ LIMIT_NETDEBUG(
+ printk(KERN_DEBUG "ipv6_hop_ra: wrong RA length %d\n", skb->nh.raw[optoff+1]));
kfree_skb(skb);
return 0;
}
u32 pkt_len;
if (skb->nh.raw[optoff+1] != 4 || (optoff&3) != 2) {
- if (net_ratelimit())
- printk(KERN_DEBUG "ipv6_hop_jumbo: wrong jumbo opt length/alignment %d\n", skb->nh.raw[optoff+1]);
+ LIMIT_NETDEBUG(
+ printk(KERN_DEBUG "ipv6_hop_jumbo: wrong jumbo opt length/alignment %d\n", skb->nh.raw[optoff+1]));
IP6_INC_STATS_BH(Ip6InHdrErrors);
goto drop;
}
* for now we don't know that.
*/
if ((addr_type == IPV6_ADDR_ANY) || (addr_type & IPV6_ADDR_MULTICAST)) {
- if (net_ratelimit())
- printk(KERN_DEBUG "icmpv6_send: addr_any/mcast source\n");
+ LIMIT_NETDEBUG(
+ printk(KERN_DEBUG "icmpv6_send: addr_any/mcast source\n"));
return;
}
* Never answer to a ICMP packet.
*/
if (is_ineligible(skb)) {
- if (net_ratelimit())
- printk(KERN_DEBUG "icmpv6_send: no reply to icmp error\n");
+ LIMIT_NETDEBUG(
+ printk(KERN_DEBUG "icmpv6_send: no reply to icmp error\n"));
return;
}
len = skb->len - msg.offset;
len = min_t(unsigned int, len, IPV6_MIN_MTU - sizeof(struct ipv6hdr) -sizeof(struct icmp6hdr));
if (len < 0) {
- if (net_ratelimit())
- printk(KERN_DEBUG "icmp: len problem\n");
+ LIMIT_NETDEBUG(
+ printk(KERN_DEBUG "icmp: len problem\n"));
goto out_dst_release;
}
skb->ip_summed = CHECKSUM_UNNECESSARY;
if (csum_ipv6_magic(saddr, daddr, skb->len, IPPROTO_ICMPV6,
skb->csum)) {
- if (net_ratelimit())
- printk(KERN_DEBUG "ICMPv6 hw checksum failed\n");
+ LIMIT_NETDEBUG(
+ printk(KERN_DEBUG "ICMPv6 hw checksum failed\n"));
skb->ip_summed = CHECKSUM_NONE;
}
}
if (skb->ip_summed == CHECKSUM_NONE) {
if (csum_ipv6_magic(saddr, daddr, skb->len, IPPROTO_ICMPV6,
skb_checksum(skb, 0, skb->len, 0))) {
- if (net_ratelimit())
+ LIMIT_NETDEBUG(
printk(KERN_DEBUG "ICMPv6 checksum failed [%04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x > %04x:%04x:%04x:%04x:%04x:%04x:%04x:%04x]\n",
- NIP6(*saddr), NIP6(*daddr));
+ NIP6(*saddr), NIP6(*daddr)));
goto discard_it;
}
}
break;
default:
- if (net_ratelimit())
- printk(KERN_DEBUG "icmpv6: msg of unknown type\n");
+ LIMIT_NETDEBUG(
+ printk(KERN_DEBUG "icmpv6: msg of unknown type\n"));
/* informational */
if (type & ICMPV6_INFOMSG_MASK)
if (dst->error) {
IP6_INC_STATS(Ip6OutNoRoutes);
- if (net_ratelimit())
- printk(KERN_DEBUG "ip6_route_me_harder: No more route.\n");
+ LIMIT_NETDEBUG(
+ printk(KERN_DEBUG "ip6_route_me_harder: No more route.\n"));
dst_release(dst);
return -EINVAL;
}
if (csum_ipv6_magic(&skb->nh.ipv6h->saddr,
&skb->nh.ipv6h->daddr,
skb->len, inet->num, skb->csum)) {
- NETDEBUG(if (net_ratelimit()) printk(KERN_DEBUG "raw v6 hw csum failure.\n"));
+ LIMIT_NETDEBUG(
+ printk(KERN_DEBUG "raw v6 hw csum failure.\n"));
skb->ip_summed = CHECKSUM_NONE;
}
}
if (!tcp_v6_check(skb->h.th,skb->len,&skb->nh.ipv6h->saddr,
&skb->nh.ipv6h->daddr,skb->csum))
return 0;
- NETDEBUG(if (net_ratelimit()) printk(KERN_DEBUG "hw tcp v6 csum failed\n"));
+ LIMIT_NETDEBUG(printk(KERN_DEBUG "hw tcp v6 csum failed\n"));
}
if (skb->len <= 76) {
if (tcp_v6_check(skb->h.th,skb->len,&skb->nh.ipv6h->saddr,
/* RFC 2460 section 8.1 says that we SHOULD log
this error. Well, it is reasonable.
*/
- if (net_ratelimit())
- printk(KERN_INFO "IPv6: udp checksum is 0\n");
+ LIMIT_NETDEBUG(
+ printk(KERN_INFO "IPv6: udp checksum is 0\n"));
goto discard;
}
if (skb->ip_summed==CHECKSUM_HW) {
skb->ip_summed = CHECKSUM_UNNECESSARY;
if (csum_ipv6_magic(saddr, daddr, ulen, IPPROTO_UDP, skb->csum)) {
- NETDEBUG(if (net_ratelimit()) printk(KERN_DEBUG "udp v6 hw csum failure.\n"));
+ LIMIT_NETDEBUG(printk(KERN_DEBUG "udp v6 hw csum failure.\n"));
skb->ip_summed = CHECKSUM_NONE;
}
}
/* ... which is an evident application bug. --ANK */
release_sock(sk);
- NETDEBUG(if (net_ratelimit()) printk(KERN_DEBUG "udp cork app bug 2\n"));
+ LIMIT_NETDEBUG(printk(KERN_DEBUG "udp cork app bug 2\n"));
err = -EINVAL;
goto out;
}