Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

net: replace ND_PRINTK with dynamic debug

ND_PRINTK with val > 1 only works when the ND_DEBUG was set in compilation
phase. Replace it with dynamic debug. Convert ND_PRINTK with val <= 1 to
net_{err,warn}_ratelimited, and convert the rest to net_dbg_ratelimited.

Suggested-by: Ido Schimmel <idosch@idosch.org>
Signed-off-by: Wang Liang <wangliang74@huawei.com>
Reviewed-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20250708033342.1627636-1-wangliang74@huawei.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>

authored by

Wang Liang and committed by
Jakub Kicinski
96698d18 cd258940

+67 -115
-9
include/net/ndisc.h
··· 60 60 61 61 #include <net/neighbour.h> 62 62 63 - /* Set to 3 to get tracing... */ 64 - #define ND_DEBUG 1 65 - 66 - #define ND_PRINTK(val, level, fmt, ...) \ 67 - do { \ 68 - if (val <= ND_DEBUG) \ 69 - net_##level##_ratelimited(fmt, ##__VA_ARGS__); \ 70 - } while (0) 71 - 72 63 struct ctl_table; 73 64 struct inet6_dev; 74 65 struct net_device;
+6 -10
net/6lowpan/ndisc.c
··· 20 20 switch (nd_opt->nd_opt_len) { 21 21 case NDISC_802154_SHORT_ADDR_LENGTH: 22 22 if (ndopts->nd_802154_opt_array[nd_opt->nd_opt_type]) 23 - ND_PRINTK(2, warn, 24 - "%s: duplicated short addr ND6 option found: type=%d\n", 25 - __func__, nd_opt->nd_opt_type); 23 + net_dbg_ratelimited("%s: duplicated short addr ND6 option found: type=%d\n", 24 + __func__, nd_opt->nd_opt_type); 26 25 else 27 26 ndopts->nd_802154_opt_array[nd_opt->nd_opt_type] = nd_opt; 28 27 return 1; ··· 62 63 lladdr_short = __ndisc_opt_addr_data(ndopts->nd_802154_opts_src_lladdr, 63 64 IEEE802154_SHORT_ADDR_LEN, 0); 64 65 if (!lladdr_short) { 65 - ND_PRINTK(2, warn, 66 - "NA: invalid short link-layer address length\n"); 66 + net_dbg_ratelimited("NA: invalid short link-layer address length\n"); 67 67 return; 68 68 } 69 69 } ··· 73 75 lladdr_short = __ndisc_opt_addr_data(ndopts->nd_802154_opts_tgt_lladdr, 74 76 IEEE802154_SHORT_ADDR_LEN, 0); 75 77 if (!lladdr_short) { 76 - ND_PRINTK(2, warn, 77 - "NA: invalid short link-layer address length\n"); 78 + net_dbg_ratelimited("NA: invalid short link-layer address length\n"); 78 79 return; 79 80 } 80 81 } ··· 206 209 sllao, tokenized, valid_lft, 207 210 prefered_lft); 208 211 if (err) 209 - ND_PRINTK(2, warn, 210 - "RA: could not add a short address based address for prefix: %pI6c\n", 211 - &pinfo->prefix); 212 + net_dbg_ratelimited("RA: could not add a short address based address for prefix: %pI6c\n", 213 + &pinfo->prefix); 212 214 } 213 215 } 214 216 #endif
+61 -96
net/ipv6/ndisc.c
··· 243 243 case ND_OPT_NONCE: 244 244 case ND_OPT_REDIRECT_HDR: 245 245 if (ndopts->nd_opt_array[nd_opt->nd_opt_type]) { 246 - ND_PRINTK(2, warn, 247 - "%s: duplicated ND6 option found: type=%d\n", 248 - __func__, nd_opt->nd_opt_type); 246 + net_dbg_ratelimited("%s: duplicated ND6 option found: type=%d\n", 247 + __func__, nd_opt->nd_opt_type); 249 248 } else { 250 249 ndopts->nd_opt_array[nd_opt->nd_opt_type] = nd_opt; 251 250 } ··· 274 275 * to accommodate future extension to the 275 276 * protocol. 276 277 */ 277 - ND_PRINTK(2, notice, 278 - "%s: ignored unsupported option; type=%d, len=%d\n", 279 - __func__, 280 - nd_opt->nd_opt_type, 281 - nd_opt->nd_opt_len); 278 + net_dbg_ratelimited("%s: ignored unsupported option; type=%d, len=%d\n", 279 + __func__, nd_opt->nd_opt_type, nd_opt->nd_opt_len); 282 280 } 283 281 next_opt: 284 282 opt_len -= l; ··· 750 754 probes -= NEIGH_VAR(neigh->parms, UCAST_PROBES); 751 755 if (probes < 0) { 752 756 if (!(READ_ONCE(neigh->nud_state) & NUD_VALID)) { 753 - ND_PRINTK(1, dbg, 754 - "%s: trying to ucast probe in NUD_INVALID: %pI6\n", 755 - __func__, target); 757 + net_dbg_ratelimited("%s: trying to ucast probe in NUD_INVALID: %pI6\n", 758 + __func__, target); 756 759 } 757 760 ndisc_send_ns(dev, target, target, saddr, 0); 758 761 } else if ((probes -= NEIGH_VAR(neigh->parms, APP_PROBES)) < 0) { ··· 809 814 return SKB_DROP_REASON_PKT_TOO_SMALL; 810 815 811 816 if (ipv6_addr_is_multicast(&msg->target)) { 812 - ND_PRINTK(2, warn, "NS: multicast target address\n"); 817 + net_dbg_ratelimited("NS: multicast target address\n"); 813 818 return reason; 814 819 } 815 820 ··· 818 823 * DAD has to be destined for solicited node multicast address. 819 824 */ 820 825 if (dad && !ipv6_addr_is_solict_mult(daddr)) { 821 - ND_PRINTK(2, warn, "NS: bad DAD packet (wrong destination)\n"); 826 + net_dbg_ratelimited("NS: bad DAD packet (wrong destination)\n"); 822 827 return reason; 823 828 } 824 829 ··· 828 833 if (ndopts.nd_opts_src_lladdr) { 829 834 lladdr = ndisc_opt_addr_data(ndopts.nd_opts_src_lladdr, dev); 830 835 if (!lladdr) { 831 - ND_PRINTK(2, warn, 832 - "NS: invalid link-layer address length\n"); 836 + net_dbg_ratelimited("NS: invalid link-layer address length\n"); 833 837 return reason; 834 838 } 835 839 ··· 838 844 * in the message. 839 845 */ 840 846 if (dad) { 841 - ND_PRINTK(2, warn, 842 - "NS: bad DAD packet (link-layer address option)\n"); 847 + net_dbg_ratelimited("NS: bad DAD packet (link-layer address option)\n"); 843 848 return reason; 844 849 } 845 850 } ··· 855 862 if (nonce != 0 && ifp->dad_nonce == nonce) { 856 863 u8 *np = (u8 *)&nonce; 857 864 /* Matching nonce if looped back */ 858 - ND_PRINTK(2, notice, 859 - "%s: IPv6 DAD loopback for address %pI6c nonce %pM ignored\n", 860 - ifp->idev->dev->name, 861 - &ifp->addr, np); 865 + net_dbg_ratelimited("%s: IPv6 DAD loopback for address %pI6c nonce %pM ignored\n", 866 + ifp->idev->dev->name, &ifp->addr, np); 862 867 goto out; 863 868 } 864 869 /* ··· 1007 1016 return SKB_DROP_REASON_PKT_TOO_SMALL; 1008 1017 1009 1018 if (ipv6_addr_is_multicast(&msg->target)) { 1010 - ND_PRINTK(2, warn, "NA: target address is multicast\n"); 1019 + net_dbg_ratelimited("NA: target address is multicast\n"); 1011 1020 return reason; 1012 1021 } 1013 1022 1014 1023 if (ipv6_addr_is_multicast(daddr) && 1015 1024 msg->icmph.icmp6_solicited) { 1016 - ND_PRINTK(2, warn, "NA: solicited NA is multicasted\n"); 1025 + net_dbg_ratelimited("NA: solicited NA is multicasted\n"); 1017 1026 return reason; 1018 1027 } 1019 1028 ··· 1032 1041 if (ndopts.nd_opts_tgt_lladdr) { 1033 1042 lladdr = ndisc_opt_addr_data(ndopts.nd_opts_tgt_lladdr, dev); 1034 1043 if (!lladdr) { 1035 - ND_PRINTK(2, warn, 1036 - "NA: invalid link-layer address length\n"); 1044 + net_dbg_ratelimited("NA: invalid link-layer address length\n"); 1037 1045 return reason; 1038 1046 } 1039 1047 } ··· 1053 1063 unsolicited advertisement. 1054 1064 */ 1055 1065 if (skb->pkt_type != PACKET_LOOPBACK) 1056 - ND_PRINTK(1, warn, 1057 - "NA: %pM advertised our address %pI6c on %s!\n", 1058 - eth_hdr(skb)->h_source, &ifp->addr, ifp->idev->dev->name); 1066 + net_warn_ratelimited("NA: %pM advertised our address %pI6c on %s!\n", 1067 + eth_hdr(skb)->h_source, &ifp->addr, 1068 + ifp->idev->dev->name); 1059 1069 in6_ifa_put(ifp); 1060 1070 return reason; 1061 1071 } ··· 1142 1152 1143 1153 idev = __in6_dev_get(skb->dev); 1144 1154 if (!idev) { 1145 - ND_PRINTK(1, err, "RS: can't find in6 device\n"); 1155 + net_err_ratelimited("RS: can't find in6 device\n"); 1146 1156 return reason; 1147 1157 } 1148 1158 ··· 1250 1260 optlen = (skb_tail_pointer(skb) - skb_transport_header(skb)) - 1251 1261 sizeof(struct ra_msg); 1252 1262 1253 - ND_PRINTK(2, info, 1254 - "RA: %s, dev: %s\n", 1255 - __func__, skb->dev->name); 1263 + net_dbg_ratelimited("RA: %s, dev: %s\n", __func__, skb->dev->name); 1256 1264 if (!(ipv6_addr_type(&ipv6_hdr(skb)->saddr) & IPV6_ADDR_LINKLOCAL)) { 1257 - ND_PRINTK(2, warn, "RA: source address is not link-local\n"); 1265 + net_dbg_ratelimited("RA: source address is not link-local\n"); 1258 1266 return reason; 1259 1267 } 1260 1268 if (optlen < 0) ··· 1260 1272 1261 1273 #ifdef CONFIG_IPV6_NDISC_NODETYPE 1262 1274 if (skb->ndisc_nodetype == NDISC_NODETYPE_HOST) { 1263 - ND_PRINTK(2, warn, "RA: from host or unauthorized router\n"); 1275 + net_dbg_ratelimited("RA: from host or unauthorized router\n"); 1264 1276 return reason; 1265 1277 } 1266 1278 #endif 1267 1279 1268 1280 in6_dev = __in6_dev_get(skb->dev); 1269 1281 if (!in6_dev) { 1270 - ND_PRINTK(0, err, "RA: can't find inet6 device for %s\n", 1271 - skb->dev->name); 1282 + net_err_ratelimited("RA: can't find inet6 device for %s\n", skb->dev->name); 1272 1283 return reason; 1273 1284 } 1274 1285 ··· 1275 1288 return SKB_DROP_REASON_IPV6_NDISC_BAD_OPTIONS; 1276 1289 1277 1290 if (!ipv6_accept_ra(in6_dev)) { 1278 - ND_PRINTK(2, info, 1279 - "RA: %s, did not accept ra for dev: %s\n", 1280 - __func__, skb->dev->name); 1291 + net_dbg_ratelimited("RA: %s, did not accept ra for dev: %s\n", __func__, 1292 + skb->dev->name); 1281 1293 goto skip_linkparms; 1282 1294 } 1283 1295 1284 1296 #ifdef CONFIG_IPV6_NDISC_NODETYPE 1285 1297 /* skip link-specific parameters from interior routers */ 1286 1298 if (skb->ndisc_nodetype == NDISC_NODETYPE_NODEFAULT) { 1287 - ND_PRINTK(2, info, 1288 - "RA: %s, nodetype is NODEFAULT, dev: %s\n", 1289 - __func__, skb->dev->name); 1299 + net_dbg_ratelimited("RA: %s, nodetype is NODEFAULT, dev: %s\n", __func__, 1300 + skb->dev->name); 1290 1301 goto skip_linkparms; 1291 1302 } 1292 1303 #endif ··· 1313 1328 send_ifinfo_notify = true; 1314 1329 1315 1330 if (!READ_ONCE(in6_dev->cnf.accept_ra_defrtr)) { 1316 - ND_PRINTK(2, info, 1317 - "RA: %s, defrtr is false for dev: %s\n", 1318 - __func__, skb->dev->name); 1331 + net_dbg_ratelimited("RA: %s, defrtr is false for dev: %s\n", __func__, 1332 + skb->dev->name); 1319 1333 goto skip_defrtr; 1320 1334 } 1321 1335 1322 1336 lifetime = ntohs(ra_msg->icmph.icmp6_rt_lifetime); 1323 1337 if (lifetime != 0 && 1324 1338 lifetime < READ_ONCE(in6_dev->cnf.accept_ra_min_lft)) { 1325 - ND_PRINTK(2, info, 1326 - "RA: router lifetime (%ds) is too short: %s\n", 1327 - lifetime, skb->dev->name); 1339 + net_dbg_ratelimited("RA: router lifetime (%ds) is too short: %s\n", lifetime, 1340 + skb->dev->name); 1328 1341 goto skip_defrtr; 1329 1342 } 1330 1343 ··· 1332 1349 net = dev_net(in6_dev->dev); 1333 1350 if (!READ_ONCE(in6_dev->cnf.accept_ra_from_local) && 1334 1351 ipv6_chk_addr(net, &ipv6_hdr(skb)->saddr, in6_dev->dev, 0)) { 1335 - ND_PRINTK(2, info, 1336 - "RA from local address detected on dev: %s: default router ignored\n", 1337 - skb->dev->name); 1352 + net_dbg_ratelimited("RA from local address detected on dev: %s: default router ignored\n", 1353 + skb->dev->name); 1338 1354 goto skip_defrtr; 1339 1355 } 1340 1356 ··· 1351 1369 rt->fib6_nh->fib_nh_dev, NULL, 1352 1370 &ipv6_hdr(skb)->saddr); 1353 1371 if (!neigh) { 1354 - ND_PRINTK(0, err, 1355 - "RA: %s got default router without neighbour\n", 1356 - __func__); 1372 + net_err_ratelimited("RA: %s got default router without neighbour\n", 1373 + __func__); 1357 1374 fib6_info_release(rt); 1358 1375 return reason; 1359 1376 } ··· 1365 1384 rt = NULL; 1366 1385 } 1367 1386 1368 - ND_PRINTK(3, info, "RA: rt: %p lifetime: %d, metric: %d, for dev: %s\n", 1369 - rt, lifetime, defrtr_usr_metric, skb->dev->name); 1387 + net_dbg_ratelimited("RA: rt: %p lifetime: %d, metric: %d, for dev: %s\n", rt, lifetime, 1388 + defrtr_usr_metric, skb->dev->name); 1370 1389 if (!rt && lifetime) { 1371 - ND_PRINTK(3, info, "RA: adding default router\n"); 1390 + net_dbg_ratelimited("RA: adding default router\n"); 1372 1391 1373 1392 if (neigh) 1374 1393 neigh_release(neigh); ··· 1377 1396 skb->dev, pref, defrtr_usr_metric, 1378 1397 lifetime); 1379 1398 if (!rt) { 1380 - ND_PRINTK(0, err, 1381 - "RA: %s failed to add default route\n", 1382 - __func__); 1399 + net_err_ratelimited("RA: %s failed to add default route\n", __func__); 1383 1400 return reason; 1384 1401 } 1385 1402 ··· 1385 1406 rt->fib6_nh->fib_nh_dev, NULL, 1386 1407 &ipv6_hdr(skb)->saddr); 1387 1408 if (!neigh) { 1388 - ND_PRINTK(0, err, 1389 - "RA: %s got default router without neighbour\n", 1390 - __func__); 1409 + net_err_ratelimited("RA: %s got default router without neighbour\n", 1410 + __func__); 1391 1411 fib6_info_release(rt); 1392 1412 return reason; 1393 1413 } ··· 1417 1439 fib6_metric_set(rt, RTAX_HOPLIMIT, 1418 1440 ra_msg->icmph.icmp6_hop_limit); 1419 1441 } else { 1420 - ND_PRINTK(2, warn, "RA: Got route advertisement with lower hop_limit than minimum\n"); 1442 + net_dbg_ratelimited("RA: Got route advertisement with lower hop_limit than minimum\n"); 1421 1443 } 1422 1444 } 1423 1445 ··· 1473 1495 lladdr = ndisc_opt_addr_data(ndopts.nd_opts_src_lladdr, 1474 1496 skb->dev); 1475 1497 if (!lladdr) { 1476 - ND_PRINTK(2, warn, 1477 - "RA: invalid link-layer address length\n"); 1498 + net_dbg_ratelimited("RA: invalid link-layer address length\n"); 1478 1499 goto out; 1479 1500 } 1480 1501 } ··· 1487 1510 } 1488 1511 1489 1512 if (!ipv6_accept_ra(in6_dev)) { 1490 - ND_PRINTK(2, info, 1491 - "RA: %s, accept_ra is false for dev: %s\n", 1492 - __func__, skb->dev->name); 1513 + net_dbg_ratelimited("RA: %s, accept_ra is false for dev: %s\n", __func__, 1514 + skb->dev->name); 1493 1515 goto out; 1494 1516 } 1495 1517 ··· 1496 1520 if (!READ_ONCE(in6_dev->cnf.accept_ra_from_local) && 1497 1521 ipv6_chk_addr(dev_net(in6_dev->dev), &ipv6_hdr(skb)->saddr, 1498 1522 in6_dev->dev, 0)) { 1499 - ND_PRINTK(2, info, 1500 - "RA from local address detected on dev: %s: router info ignored.\n", 1501 - skb->dev->name); 1523 + net_dbg_ratelimited("RA from local address detected on dev: %s: router info ignored.\n", 1524 + skb->dev->name); 1502 1525 goto skip_routeinfo; 1503 1526 } 1504 1527 ··· 1533 1558 #ifdef CONFIG_IPV6_NDISC_NODETYPE 1534 1559 /* skip link-specific ndopts from interior routers */ 1535 1560 if (skb->ndisc_nodetype == NDISC_NODETYPE_NODEFAULT) { 1536 - ND_PRINTK(2, info, 1537 - "RA: %s, nodetype is NODEFAULT (interior routes), dev: %s\n", 1538 - __func__, skb->dev->name); 1561 + net_dbg_ratelimited("RA: %s, nodetype is NODEFAULT (interior routes), dev: %s\n", 1562 + __func__, skb->dev->name); 1539 1563 goto out; 1540 1564 } 1541 1565 #endif ··· 1563 1589 } 1564 1590 1565 1591 if (mtu < IPV6_MIN_MTU || mtu > skb->dev->mtu) { 1566 - ND_PRINTK(2, warn, "RA: invalid mtu: %d\n", mtu); 1592 + net_dbg_ratelimited("RA: invalid mtu: %d\n", mtu); 1567 1593 } else if (READ_ONCE(in6_dev->cnf.mtu6) != mtu) { 1568 1594 WRITE_ONCE(in6_dev->cnf.mtu6, mtu); 1569 1595 fib6_metric_set(rt, RTAX_MTU, mtu); ··· 1582 1608 } 1583 1609 1584 1610 if (ndopts.nd_opts_tgt_lladdr || ndopts.nd_opts_rh) { 1585 - ND_PRINTK(2, warn, "RA: invalid RA options\n"); 1611 + net_dbg_ratelimited("RA: invalid RA options\n"); 1586 1612 } 1587 1613 out: 1588 1614 /* Send a notify if RA changed managed/otherconf flags or ··· 1610 1636 switch (skb->ndisc_nodetype) { 1611 1637 case NDISC_NODETYPE_HOST: 1612 1638 case NDISC_NODETYPE_NODEFAULT: 1613 - ND_PRINTK(2, warn, 1614 - "Redirect: from host or unauthorized router\n"); 1639 + net_dbg_ratelimited("Redirect: from host or unauthorized router\n"); 1615 1640 return reason; 1616 1641 } 1617 1642 #endif 1618 1643 1619 1644 if (!(ipv6_addr_type(&ipv6_hdr(skb)->saddr) & IPV6_ADDR_LINKLOCAL)) { 1620 - ND_PRINTK(2, warn, 1621 - "Redirect: source address is not link-local\n"); 1645 + net_dbg_ratelimited("Redirect: source address is not link-local\n"); 1622 1646 return reason; 1623 1647 } 1624 1648 ··· 1677 1705 } 1678 1706 1679 1707 if (ipv6_get_lladdr(dev, &saddr_buf, IFA_F_TENTATIVE)) { 1680 - ND_PRINTK(2, warn, "Redirect: no link-local address on %s\n", 1681 - dev->name); 1708 + net_dbg_ratelimited("Redirect: no link-local address on %s\n", dev->name); 1682 1709 return; 1683 1710 } 1684 1711 1685 1712 if (!ipv6_addr_equal(&ipv6_hdr(skb)->daddr, target) && 1686 1713 ipv6_addr_type(target) != (IPV6_ADDR_UNICAST|IPV6_ADDR_LINKLOCAL)) { 1687 - ND_PRINTK(2, warn, 1688 - "Redirect: target address is not link-local unicast\n"); 1714 + net_dbg_ratelimited("Redirect: target address is not link-local unicast\n"); 1689 1715 return; 1690 1716 } 1691 1717 ··· 1702 1732 rt = dst_rt6_info(dst); 1703 1733 1704 1734 if (rt->rt6i_flags & RTF_GATEWAY) { 1705 - ND_PRINTK(2, warn, 1706 - "Redirect: destination is not a neighbour\n"); 1735 + net_dbg_ratelimited("Redirect: destination is not a neighbour\n"); 1707 1736 goto release; 1708 1737 } 1709 1738 ··· 1715 1746 if (dev->addr_len) { 1716 1747 struct neighbour *neigh = dst_neigh_lookup(skb_dst(skb), target); 1717 1748 if (!neigh) { 1718 - ND_PRINTK(2, warn, 1719 - "Redirect: no neigh for target address\n"); 1749 + net_dbg_ratelimited("Redirect: no neigh for target address\n"); 1720 1750 goto release; 1721 1751 } 1722 1752 ··· 1816 1848 __skb_push(skb, skb->data - skb_transport_header(skb)); 1817 1849 1818 1850 if (ipv6_hdr(skb)->hop_limit != 255) { 1819 - ND_PRINTK(2, warn, "NDISC: invalid hop-limit: %d\n", 1820 - ipv6_hdr(skb)->hop_limit); 1851 + net_dbg_ratelimited("NDISC: invalid hop-limit: %d\n", ipv6_hdr(skb)->hop_limit); 1821 1852 return SKB_DROP_REASON_IPV6_NDISC_HOP_LIMIT; 1822 1853 } 1823 1854 1824 1855 if (msg->icmph.icmp6_code != 0) { 1825 - ND_PRINTK(2, warn, "NDISC: invalid ICMPv6 code: %d\n", 1826 - msg->icmph.icmp6_code); 1856 + net_dbg_ratelimited("NDISC: invalid ICMPv6 code: %d\n", msg->icmph.icmp6_code); 1827 1857 return SKB_DROP_REASON_IPV6_NDISC_BAD_CODE; 1828 1858 } 1829 1859 ··· 1972 2006 err = inet_ctl_sock_create(&sk, PF_INET6, 1973 2007 SOCK_RAW, IPPROTO_ICMPV6, net); 1974 2008 if (err < 0) { 1975 - ND_PRINTK(0, err, 1976 - "NDISC: Failed to initialize the control socket (err %d)\n", 1977 - err); 2009 + net_err_ratelimited("NDISC: Failed to initialize the control socket (err %d)\n", 2010 + err); 1978 2011 return err; 1979 2012 } 1980 2013