--- initial
+++ final
@@ -1,111 +1,111 @@
 static int __init ip_auto_config(void) {
   __be32 addr;
 #ifdef IPCONFIG_DYNAMIC
   int retries = CONF_OPEN_RETRIES;
 #endif
   int err;
   unsigned int i;
 #ifdef CONFIG_PROC_FS
-  proc_net_fops_create(&init_net, "pnp", S_IRUGO, &pnp_seq_fops);
+  proc_create("pnp", S_IRUGO, init_net.proc_net, &pnp_seq_fops);
 #endif /* CONFIG_PROC_FS */
   if (!ic_enable) return 0;
   DBG(("IP-Config: Entered.\n"));
 #ifdef IPCONFIG_DYNAMIC
 try_try_again:
 #endif
   /* Wait for devices to appear */
   err = wait_for_devices();
   if (err) return err;
   /* Setup all network devices */
   err = ic_open_devs();
   if (err) return err;
   /* Give drivers a chance to settle */
   msleep(CONF_POST_OPEN);
   /*
    * If the config information is insufficient (e.g., our IP address or
    * IP address of the boot server is missing or we have multiple network
    * interfaces and no default was set), use BOOTP or RARP to get the
    * missing values.
    */
   if (ic_myaddr == NONE ||
 #ifdef CONFIG_ROOT_NFS
       (root_server_addr == NONE && ic_servaddr == NONE && ROOT_DEV == Root_NFS) ||
 #endif
       ic_first_dev->next) {
 #ifdef IPCONFIG_DYNAMIC
     if (ic_dynamic() < 0) {
       ic_close_devs();
       /*
        * I don't know why, but sometimes the
        * eepro100 driver (at least) gets upset and
        * doesn't work the first time it's opened.
        * But then if you close it and reopen it, it
        * works just fine.  So we need to try that at
        * least once before giving up.
        *
        * Also, if the root will be NFS-mounted, we
        * have nowhere to go if DHCP fails.  So we
        * just have to keep trying forever.
        *
        * 				-- Chip
        */
 #ifdef CONFIG_ROOT_NFS
       if (ROOT_DEV == Root_NFS) {
         pr_err("IP-Config: Retrying forever (NFS root)...\n");
         goto try_try_again;
       }
 #endif
       if (--retries) {
         pr_err("IP-Config: Reopening network devices...\n");
         goto try_try_again;
       }
       /* Oh, well.  At least we tried. */
       pr_err("IP-Config: Auto-configuration of network failed\n");
       return -1;
     }
 #else  /* !DYNAMIC */
     pr_err("IP-Config: Incomplete network configuration information\n");
     ic_close_devs();
     return -1;
 #endif /* IPCONFIG_DYNAMIC */
   } else {
     /* Device selected manually or only one device -> use it */
     ic_dev = ic_first_dev->dev;
   }
   addr = root_nfs_parse_addr(root_server_path);
   if (root_server_addr == NONE) root_server_addr = addr;
   /*
    * Use defaults wherever applicable.
    */
   if (ic_defaults() < 0) return -1;
   /*
    * Close all network devices except the device we've
    * autoconfigured and set up routes.
    */
   ic_close_devs();
   if (ic_setup_if() < 0 || ic_setup_routes() < 0) return -1;
     /*
      * Record which protocol was actually used.
      */
 #ifdef IPCONFIG_DYNAMIC
   ic_proto_used = ic_got_reply | (ic_proto_enabled & IC_USE_DHCP);
 #endif
 #ifndef IPCONFIG_SILENT
   /*
    * Clue in the operator.
    */
   pr_info("IP-Config: Complete:\n");
   pr_info("     device=%s, hwaddr=%*phC, ipaddr=%pI4, mask=%pI4, gw=%pI4\n", ic_dev->name, ic_dev->addr_len, ic_dev->dev_addr, &ic_myaddr, &ic_netmask, &ic_gateway);
   pr_info("     host=%s, domain=%s, nis-domain=%s\n", utsname()->nodename, ic_domain, utsname()->domainname);
   pr_info("     bootserver=%pI4, rootserver=%pI4, rootpath=%s", &ic_servaddr, &root_server_addr, root_server_path);
   if (ic_dev_mtu) pr_cont(", mtu=%d", ic_dev_mtu);
   for (i = 0; i < CONF_NAMESERVERS_MAX; i++)
     if (ic_nameservers[i] != NONE) {
       pr_info("     nameserver%u=%pI4", i, &ic_nameservers[i]);
       break;
     }
   for (i++; i < CONF_NAMESERVERS_MAX; i++)
     if (ic_nameservers[i] != NONE) pr_cont(", nameserver%u=%pI4\n", i, &ic_nameservers[i]);
 #endif /* !SILENT */
   return 0;
 }<sep>@@
expression net,e1,e2,e3;
@@

- proc_net_fops_create(&net, e1, e2, e3)
+ proc_create(e1, e2, net.proc_net, e3)