hc
2024-12-19 9370bb92b2d16684ee45cf24e879c93c509162da
kernel/net/ipv4/ipconfig.c
....@@ -85,7 +85,6 @@
8585
8686 /* Define the friendly delay before and after opening net devices */
8787 #define CONF_POST_OPEN 10 /* After opening: 10 msecs */
88
-#define CONF_CARRIER_TIMEOUT 120000 /* Wait for carrier timeout */
8988
9089 /* Define the timeout for waiting for a DHCP/BOOTP/RARP reply */
9190 #define CONF_OPEN_RETRIES 2 /* (Re)open devices twice */
....@@ -100,6 +99,9 @@
10099
101100 #define NONE cpu_to_be32(INADDR_NONE)
102101 #define ANY cpu_to_be32(INADDR_ANY)
102
+
103
+/* Wait for carrier timeout default in seconds */
104
+static unsigned int carrier_timeout = 120;
103105
104106 /*
105107 * Public IP configuration
....@@ -220,7 +222,7 @@
220222 for_each_netdev(&init_net, dev) {
221223 if (!(dev->flags & IFF_LOOPBACK) && !netdev_uses_dsa(dev))
222224 continue;
223
- if (dev_change_flags(dev, dev->flags | IFF_UP) < 0)
225
+ if (dev_change_flags(dev, dev->flags | IFF_UP, NULL) < 0)
224226 pr_err("IP-Config: Failed to open %s\n", dev->name);
225227 }
226228
....@@ -238,7 +240,7 @@
238240 if (ic_proto_enabled && !able)
239241 continue;
240242 oflags = dev->flags;
241
- if (dev_change_flags(dev, oflags | IFF_UP) < 0) {
243
+ if (dev_change_flags(dev, oflags | IFF_UP, NULL) < 0) {
242244 pr_err("IP-Config: Failed to open %s\n",
243245 dev->name);
244246 continue;
....@@ -268,9 +270,9 @@
268270
269271 /* wait for a carrier on at least one device */
270272 start = jiffies;
271
- next_msg = start + msecs_to_jiffies(CONF_CARRIER_TIMEOUT/12);
273
+ next_msg = start + msecs_to_jiffies(20000);
272274 while (time_before(jiffies, start +
273
- msecs_to_jiffies(CONF_CARRIER_TIMEOUT))) {
275
+ msecs_to_jiffies(carrier_timeout * 1000))) {
274276 int wait, elapsed;
275277
276278 for_each_netdev(&init_net, dev)
....@@ -283,9 +285,9 @@
283285 continue;
284286
285287 elapsed = jiffies_to_msecs(jiffies - start);
286
- wait = (CONF_CARRIER_TIMEOUT - elapsed + 500)/1000;
288
+ wait = (carrier_timeout * 1000 - elapsed + 500) / 1000;
287289 pr_info("Waiting up to %d more seconds for network.\n", wait);
288
- next_msg = jiffies + msecs_to_jiffies(CONF_CARRIER_TIMEOUT/12);
290
+ next_msg = jiffies + msecs_to_jiffies(20000);
289291 }
290292 have_carrier:
291293 rtnl_unlock();
....@@ -315,7 +317,7 @@
315317 dev = d->dev;
316318 if (d != ic_dev && !netdev_uses_dsa(dev)) {
317319 pr_debug("IP-Config: Downing %s\n", dev->name);
318
- dev_change_flags(dev, d->flags);
320
+ dev_change_flags(dev, d->flags, NULL);
319321 }
320322 kfree(d);
321323 }
....@@ -429,6 +431,8 @@
429431 ic_netmask = htonl(IN_CLASSB_NET);
430432 else if (IN_CLASSC(ntohl(ic_myaddr)))
431433 ic_netmask = htonl(IN_CLASSC_NET);
434
+ else if (IN_CLASSE(ntohl(ic_myaddr)))
435
+ ic_netmask = htonl(IN_CLASSE_NET);
432436 else {
433437 pr_err("IP-Config: Unable to guess netmask for address %pI4\n",
434438 &ic_myaddr);
....@@ -1333,7 +1337,7 @@
13331337
13341338 /* Create a new file under /proc/net/ipconfig */
13351339 static int ipconfig_proc_net_create(const char *name,
1336
- const struct file_operations *fops)
1340
+ const struct proc_ops *proc_ops)
13371341 {
13381342 char *pname;
13391343 struct proc_dir_entry *p;
....@@ -1345,7 +1349,7 @@
13451349 if (!pname)
13461350 return -ENOMEM;
13471351
1348
- p = proc_create(pname, 0444, init_net.proc_net, fops);
1352
+ p = proc_create(pname, 0444, init_net.proc_net, proc_ops);
13491353 kfree(pname);
13501354 if (!p)
13511355 return -ENOMEM;
....@@ -1354,7 +1358,7 @@
13541358 }
13551359
13561360 /* Write NTP server IP addresses to /proc/net/ipconfig/ntp_servers */
1357
-static int ntp_servers_seq_show(struct seq_file *seq, void *v)
1361
+static int ntp_servers_show(struct seq_file *seq, void *v)
13581362 {
13591363 int i;
13601364
....@@ -1364,18 +1368,7 @@
13641368 }
13651369 return 0;
13661370 }
1367
-
1368
-static int ntp_servers_seq_open(struct inode *inode, struct file *file)
1369
-{
1370
- return single_open(file, ntp_servers_seq_show, NULL);
1371
-}
1372
-
1373
-static const struct file_operations ntp_servers_seq_fops = {
1374
- .open = ntp_servers_seq_open,
1375
- .read = seq_read,
1376
- .llseek = seq_lseek,
1377
- .release = single_release,
1378
-};
1371
+DEFINE_PROC_SHOW_ATTRIBUTE(ntp_servers);
13791372 #endif /* CONFIG_PROC_FS */
13801373
13811374 /*
....@@ -1422,6 +1415,9 @@
14221415 struct net_device *dev;
14231416 int found = 0;
14241417
1418
+ /* make sure deferred device probes are finished */
1419
+ wait_for_device_probe();
1420
+
14251421 rtnl_lock();
14261422 for_each_netdev(&init_net, dev) {
14271423 if (ic_is_init_dev(dev)) {
....@@ -1448,7 +1444,7 @@
14481444 int retries = CONF_OPEN_RETRIES;
14491445 #endif
14501446 int err;
1451
- unsigned int i;
1447
+ unsigned int i, count;
14521448
14531449 /* Initialise all name servers and NTP servers to NONE (but only if the
14541450 * "ip=" or "nfsaddrs=" kernel command line parameters weren't decoded,
....@@ -1463,7 +1459,7 @@
14631459 proc_create_single("pnp", 0444, init_net.proc_net, pnp_seq_show);
14641460
14651461 if (ipconfig_proc_net_init() == 0)
1466
- ipconfig_proc_net_create("ntp_servers", &ntp_servers_seq_fops);
1462
+ ipconfig_proc_net_create("ntp_servers", &ntp_servers_proc_ops);
14671463 #endif /* CONFIG_PROC_FS */
14681464
14691465 if (!ic_enable)
....@@ -1493,10 +1489,10 @@
14931489 * missing values.
14941490 */
14951491 if (ic_myaddr == NONE ||
1496
-#ifdef CONFIG_ROOT_NFS
1492
+#if defined(CONFIG_ROOT_NFS) || defined(CONFIG_CIFS_ROOT)
14971493 (root_server_addr == NONE &&
14981494 ic_servaddr == NONE &&
1499
- ROOT_DEV == Root_NFS) ||
1495
+ (ROOT_DEV == Root_NFS || ROOT_DEV == Root_CIFS)) ||
15001496 #endif
15011497 ic_first_dev->next) {
15021498 #ifdef IPCONFIG_DYNAMIC
....@@ -1520,6 +1516,12 @@
15201516 #ifdef CONFIG_ROOT_NFS
15211517 if (ROOT_DEV == Root_NFS) {
15221518 pr_err("IP-Config: Retrying forever (NFS root)...\n");
1519
+ goto try_try_again;
1520
+ }
1521
+#endif
1522
+#ifdef CONFIG_CIFS_ROOT
1523
+ if (ROOT_DEV == Root_CIFS) {
1524
+ pr_err("IP-Config: Retrying forever (CIFS root)...\n");
15231525 goto try_try_again;
15241526 }
15251527 #endif
....@@ -1576,7 +1578,7 @@
15761578 if (ic_dev_mtu)
15771579 pr_cont(", mtu=%d", ic_dev_mtu);
15781580 /* Name servers (if any): */
1579
- for (i = 0; i < CONF_NAMESERVERS_MAX; i++) {
1581
+ for (i = 0, count = 0; i < CONF_NAMESERVERS_MAX; i++) {
15801582 if (ic_nameservers[i] != NONE) {
15811583 if (i == 0)
15821584 pr_info(" nameserver%u=%pI4",
....@@ -1584,12 +1586,14 @@
15841586 else
15851587 pr_cont(", nameserver%u=%pI4",
15861588 i, &ic_nameservers[i]);
1589
+
1590
+ count++;
15871591 }
1588
- if (i + 1 == CONF_NAMESERVERS_MAX)
1592
+ if ((i + 1 == CONF_NAMESERVERS_MAX) && count > 0)
15891593 pr_cont("\n");
15901594 }
15911595 /* NTP servers (if any): */
1592
- for (i = 0; i < CONF_NTP_SERVERS_MAX; i++) {
1596
+ for (i = 0, count = 0; i < CONF_NTP_SERVERS_MAX; i++) {
15931597 if (ic_ntp_servers[i] != NONE) {
15941598 if (i == 0)
15951599 pr_info(" ntpserver%u=%pI4",
....@@ -1597,8 +1601,10 @@
15971601 else
15981602 pr_cont(", ntpserver%u=%pI4",
15991603 i, &ic_ntp_servers[i]);
1604
+
1605
+ count++;
16001606 }
1601
- if (i + 1 == CONF_NTP_SERVERS_MAX)
1607
+ if ((i + 1 == CONF_NTP_SERVERS_MAX) && count > 0)
16021608 pr_cont("\n");
16031609 }
16041610 #endif /* !SILENT */
....@@ -1622,7 +1628,7 @@
16221628
16231629 /*
16241630 * Decode any IP configuration options in the "ip=" or "nfsaddrs=" kernel
1625
- * command line parameter. See Documentation/filesystems/nfs/nfsroot.txt.
1631
+ * command line parameter. See Documentation/admin-guide/nfs/nfsroot.rst.
16261632 */
16271633 static int __init ic_proto_name(char *name)
16281634 {
....@@ -1792,3 +1798,18 @@
17921798 return 1;
17931799 }
17941800 __setup("dhcpclass=", vendor_class_identifier_setup);
1801
+
1802
+static int __init set_carrier_timeout(char *str)
1803
+{
1804
+ ssize_t ret;
1805
+
1806
+ if (!str)
1807
+ return 0;
1808
+
1809
+ ret = kstrtouint(str, 0, &carrier_timeout);
1810
+ if (ret)
1811
+ return 0;
1812
+
1813
+ return 1;
1814
+}
1815
+__setup("carrier_timeout=", set_carrier_timeout);