aboutsummaryrefslogtreecommitdiffstats
path: root/net/sctp/ipv6.c
diff options
context:
space:
mode:
authorDaniel Borkmann <dborkman@redhat.com>2013-06-28 13:49:40 -0400
committerDavid S. Miller <davem@davemloft.net>2013-07-02 02:22:13 -0400
commitbb33381d0c97cdee25f2cdab540b6e2bd16fa03b (patch)
treea4def6ec9f554908e07efa8671ca52f60f9a2a18 /net/sctp/ipv6.c
parent1067964305df131ede2c08c2f3c9b3892640f1c6 (diff)
net: sctp: rework debugging framework to use pr_debug and friends
We should get rid of all own SCTP debug printk macros and use the ones that the kernel offers anyway instead. This makes the code more readable and conform to the kernel code, and offers all the features of dynamic debbuging that pr_debug() et al has, such as only turning on/off portions of debug messages at runtime through debugfs. The runtime cost of having CONFIG_DYNAMIC_DEBUG enabled, but none of the debug statements printing, is negligible [1]. If kernel debugging is completly turned off, then these statements will also compile into "empty" functions. While we're at it, we also need to change the Kconfig option as it /now/ only refers to the ifdef'ed code portions in outqueue.c that enable further debugging/tracing of SCTP transaction fields. Also, since SCTP_ASSERT code was enabled with this Kconfig option and has now been removed, we transform those code parts into WARNs resp. where appropriate BUG_ONs so that those bugs can be more easily detected as probably not many people have SCTP debugging permanently turned on. To turn on all SCTP debugging, the following steps are needed: # mount -t debugfs none /sys/kernel/debug # echo -n 'module sctp +p' > /sys/kernel/debug/dynamic_debug/control This can be done more fine-grained on a per file, per line basis and others as described in [2]. [1] https://www.kernel.org/doc/ols/2009/ols2009-pages-39-46.pdf [2] Documentation/dynamic-debug-howto.txt Signed-off-by: Daniel Borkmann <dborkman@redhat.com> Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'net/sctp/ipv6.c')
-rw-r--r--net/sctp/ipv6.c21
1 files changed, 12 insertions, 9 deletions
diff --git a/net/sctp/ipv6.c b/net/sctp/ipv6.c
index adeaa0e64f52..09ffcc912d23 100644
--- a/net/sctp/ipv6.c
+++ b/net/sctp/ipv6.c
@@ -239,9 +239,8 @@ static int sctp_v6_xmit(struct sk_buff *skb, struct sctp_transport *transport)
239 fl6.daddr = *rt0->addr; 239 fl6.daddr = *rt0->addr;
240 } 240 }
241 241
242 SCTP_DEBUG_PRINTK("%s: skb:%p, len:%d, src:%pI6 dst:%pI6\n", 242 pr_debug("%s: skb:%p, len:%d, src:%pI6 dst:%pI6\n", __func__, skb,
243 __func__, skb, skb->len, 243 skb->len, &fl6.saddr, &fl6.daddr);
244 &fl6.saddr, &fl6.daddr);
245 244
246 SCTP_INC_STATS(sock_net(sk), SCTP_MIB_OUTSCTPPACKS); 245 SCTP_INC_STATS(sock_net(sk), SCTP_MIB_OUTSCTPPACKS);
247 246
@@ -276,7 +275,7 @@ static void sctp_v6_get_dst(struct sctp_transport *t, union sctp_addr *saddr,
276 if (ipv6_addr_type(&daddr->v6.sin6_addr) & IPV6_ADDR_LINKLOCAL) 275 if (ipv6_addr_type(&daddr->v6.sin6_addr) & IPV6_ADDR_LINKLOCAL)
277 fl6->flowi6_oif = daddr->v6.sin6_scope_id; 276 fl6->flowi6_oif = daddr->v6.sin6_scope_id;
278 277
279 SCTP_DEBUG_PRINTK("%s: DST=%pI6 ", __func__, &fl6->daddr); 278 pr_debug("%s: dst=%pI6 ", __func__, &fl6->daddr);
280 279
281 if (asoc) 280 if (asoc)
282 fl6->fl6_sport = htons(asoc->base.bind_addr.port); 281 fl6->fl6_sport = htons(asoc->base.bind_addr.port);
@@ -284,7 +283,8 @@ static void sctp_v6_get_dst(struct sctp_transport *t, union sctp_addr *saddr,
284 if (saddr) { 283 if (saddr) {
285 fl6->saddr = saddr->v6.sin6_addr; 284 fl6->saddr = saddr->v6.sin6_addr;
286 fl6->fl6_sport = saddr->v6.sin6_port; 285 fl6->fl6_sport = saddr->v6.sin6_port;
287 SCTP_DEBUG_PRINTK("SRC=%pI6 - ", &fl6->saddr); 286
287 pr_debug("src=%pI6 - ", &fl6->saddr);
288 } 288 }
289 289
290 dst = ip6_dst_lookup_flow(sk, fl6, NULL, false); 290 dst = ip6_dst_lookup_flow(sk, fl6, NULL, false);
@@ -348,13 +348,16 @@ static void sctp_v6_get_dst(struct sctp_transport *t, union sctp_addr *saddr,
348out: 348out:
349 if (!IS_ERR_OR_NULL(dst)) { 349 if (!IS_ERR_OR_NULL(dst)) {
350 struct rt6_info *rt; 350 struct rt6_info *rt;
351
351 rt = (struct rt6_info *)dst; 352 rt = (struct rt6_info *)dst;
352 t->dst = dst; 353 t->dst = dst;
353 SCTP_DEBUG_PRINTK("rt6_dst:%pI6 rt6_src:%pI6\n", 354
354 &rt->rt6i_dst.addr, &fl6->saddr); 355 pr_debug("rt6_dst:%pI6 rt6_src:%pI6\n", &rt->rt6i_dst.addr,
356 &fl6->saddr);
355 } else { 357 } else {
356 t->dst = NULL; 358 t->dst = NULL;
357 SCTP_DEBUG_PRINTK("NO ROUTE\n"); 359
360 pr_debug("no route\n");
358 } 361 }
359} 362}
360 363
@@ -377,7 +380,7 @@ static void sctp_v6_get_saddr(struct sctp_sock *sk,
377 struct flowi6 *fl6 = &fl->u.ip6; 380 struct flowi6 *fl6 = &fl->u.ip6;
378 union sctp_addr *saddr = &t->saddr; 381 union sctp_addr *saddr = &t->saddr;
379 382
380 SCTP_DEBUG_PRINTK("%s: asoc:%p dst:%p\n", __func__, t->asoc, t->dst); 383 pr_debug("%s: asoc:%p dst:%p\n", __func__, t->asoc, t->dst);
381 384
382 if (t->dst) { 385 if (t->dst) {
383 saddr->v6.sin6_family = AF_INET6; 386 saddr->v6.sin6_family = AF_INET6;