home *** CD-ROM | disk | FTP | other *** search
/ Caldera Network Desktop 1.0 / caldera-network-desktop-1.0.bin / images / ramdisk2.img / usr / lib / perl / net < prev    next >
Text File  |  1995-10-06  |  15KB  |  826 lines

  1. ## Takes care of configuring the network -*-perl-*-
  2.  
  3. $net_up = 0;
  4. $interface = "internal";
  5. $hostname = "";
  6. $domainname = "";
  7. $fqdn = "";
  8. $ipaddr = "";
  9. $network = "";
  10. $netmask = "";
  11. $broadcast = "";
  12. $gateway = "";
  13. @nslist = ();
  14.  
  15. $config_net_first_time = 1;
  16. $net_configed = 0;
  17.  
  18. sub make_net_up {
  19.  
  20.     while (! $net_up) {
  21.     if (! &config_net) {
  22.         return 0;
  23.     }
  24.     
  25.     &_uninit_net;
  26.     &_init_net;
  27.     }
  28.  
  29.     return 1;
  30. }
  31.  
  32. sub reconfig_net_up {
  33.  
  34.     if ($net_up) {
  35.     &_uninit_net;
  36.     }
  37.     return &make_net_up;
  38. }
  39.  
  40. sub bring_net_up {
  41.     local ( $ret );
  42.  
  43.     if ($net_up) {
  44.     if (! &rhs_yesno("Notice",
  45. <<EOM
  46. >
  47. Networking appears to be active already.
  48. >
  49. Bring it down and then back up?
  50. >
  51. EOM
  52.              , 60)) {
  53.         return 1;
  54.     }
  55.     &_uninit_net;
  56.     }
  57.  
  58.     if (! $net_configed) {
  59.     &rhs_msgbox("Error",
  60. <<EOM
  61. >
  62. Networking is not yet configured.
  63. >
  64. EOM
  65.             , 60);
  66.     return 0;
  67.     }
  68.  
  69.     $ret = &_init_net;
  70.  
  71.     if ($net_up) {
  72.     &rhs_msgbox("Notice",
  73. <<EOM
  74. >
  75. The network has been initialized.
  76. >
  77. EOM
  78.             , 40);
  79.     } else {
  80.     &rhs_msgbox("Error",
  81. <<EOM
  82. >
  83. The network has NOT been initialized.
  84. >
  85. EOM
  86.             , 40);
  87.     }
  88.  
  89.     return $ret;
  90. }
  91.  
  92. sub bring_net_down {
  93.     local ( $ret );
  94.  
  95.     $ret = &_uninit_net;
  96.  
  97.     if ($net_up) {
  98.     &rhs_msgbox("Error",
  99. <<EOM
  100. >
  101. The network was NOT brought down.
  102. >
  103. EOM
  104.             , 40);
  105.     } else {
  106.     &rhs_msgbox("Notice",
  107. <<EOM
  108. >
  109. Networking has been brought down.
  110. >
  111. EOM
  112.             , 40);
  113.     }
  114.  
  115.     return $ret;
  116. }
  117.  
  118. # This sub is used for the auto install
  119. sub configure_network {
  120.  
  121.     &mount_bootdisk();
  122.  
  123.     if ( -f "/bootdisk/defaults/network" ) {
  124.     require "/bootdisk/defaults/network";
  125.     $config_net_first_time = 0;
  126.     }
  127.  
  128.     if ($net_configed) {
  129.     if (&rhs_yesno("Choose",
  130. <<EOM
  131. >
  132. Networking has already been configured (probably for
  133. an NFS install).  Do you wish to use this configuration for
  134. your installed Linux system?
  135. >
  136. EOM
  137.                , 70)) {
  138.         return 1;
  139.     }
  140.     }
  141.  
  142.     if ($config_net_first_time && !($installsource eq "ftp" || 
  143.                                     $installsource eq "nfs")) {
  144.     if (! &rhs_yesno("Choose",
  145. <<EOM
  146. >
  147. Do you want to configure networking for your installed Linux system?
  148. >
  149. EOM
  150.              , 70)) {
  151.         $net_configed = 0;
  152.  
  153.         if (! &rhs_inputbox ( "Hostname",
  154. <<EOM
  155. >
  156. Please enter a hostname for this machine (Example: torgo.redhat.com)
  157. >
  158. EOM
  159.                  , 70, $tmp)) {
  160.         return 0;
  161.         }
  162.         $fqdn = $dialog_result;
  163.         return 1;
  164.     }
  165.     }
  166.  
  167.     return &reconfig_net_up;
  168.  
  169.     print "Reached end of configure_network() !!\n";
  170.     exit 1;
  171. }
  172.  
  173. sub config_net {
  174.     local ( $msg, $i, $first_time );
  175.  
  176.     if ($net_up) {
  177.     if (! &rhs_yesno("Notice",
  178. <<EOM
  179. >
  180. Networking appears to be up.  If you continue and
  181. change any network parameters, you should bring networking down
  182. and back up again.
  183. >
  184. Continue?
  185. >
  186. EOM
  187.              , 60)) {
  188.         return 1;
  189.     }
  190.     }
  191.  
  192.     while (1) {
  193.     if ($config_net_first_time) {
  194.         $config_net_first_time = 0;
  195.         next if (! &config_net_sequence);
  196.     }
  197.  
  198.     # Are these parameters correct?
  199.         $msg =
  200. <<EOM
  201. >You have entered the following parameters:
  202. >Interface:         $interface
  203. >Hostname:          $hostname
  204. >Domain name:       $domainname
  205. >IP address:        $ipaddr
  206. >Network address:   $network
  207. >Network mask:      $netmask
  208. >Broadcast address: $broadcast
  209. >Gateway:           $gateway
  210. EOM
  211.     ;
  212.         if (@nslist == 0) {
  213.             $msg .=
  214. <<EOM
  215. >Nameserver:        none
  216. EOM
  217.     ;
  218.         } else {
  219.             for ($i = 0; $i < @nslist; $i++) {
  220.                 $msg .=
  221. <<EOM
  222. >Nameserver:        $nslist[$i]
  223. EOM
  224.     ;
  225.             }
  226.         }
  227.         $msg .=
  228. <<EOM
  229. >
  230. Is this correct?
  231. EOM
  232.     ;
  233.  
  234.     if (&rhs_yesno("Net Config", $msg, 50)) {
  235.         $net_configed = 1;
  236.         return 1;
  237.     }
  238.  
  239.     if (! &rhs_menu("Choose",
  240. <<EOM
  241. >
  242. What do you wish to do?
  243. >
  244. EOM
  245.             , 60, 3,
  246.             "Sequence", "Configure network information in sequence",
  247.             "Individual", "Configure individual network parameters",
  248.             "Cancel", "Cancel all network configuration")) {
  249.         return 0;
  250.     }
  251.  
  252.     if ($dialog_result eq "Sequence") {
  253.         next if (! &config_net_sequence);
  254.     } elsif ($dialog_result eq "Individual") {
  255.         next if (! &config_net_individual);
  256.     } elsif ($dialog_result eq "Cancel") {
  257.         # Cancel
  258.         $net_configed = 0;
  259.         return 0;
  260.     }
  261.     }
  262. }
  263.  
  264. sub config_net_sequence {
  265.  
  266.     return 0 if (! &net_interface);
  267.     return 0 if (! &net_hostname);
  268.     return 0 if (! &net_domainname);
  269.     return 0 if (! &net_fqdn);
  270.     return 0 if (! &net_ipaddr);
  271.     return 0 if (! &net_network);
  272.     return 0 if (! &net_netmask);
  273.     return 0 if (! &net_broadcast);
  274.     return 0 if (! &net_gateway);
  275.     return 0 if (! &net_nameservers);
  276.     
  277.     return 1;
  278. }
  279.  
  280. sub config_net_individual {
  281.  
  282.     local ( $ret, $i, $ns );
  283.  
  284.     while (1) {
  285.     $ns = $nslist[0];
  286.     for ($i = 1; $i < @nslist; $i++) {
  287.         $ns .= ", $nslist[$i]";
  288.     }
  289.     $ns = sprintf("%.25s", $ns);
  290.     $ret = &rhs_menu ( "Network Configuration",
  291. <<EOM
  292. Edit network parameters.
  293. EOM
  294.               , 60, 12,
  295.               "Interface",       $interface,
  296.               "Hostname",        $hostname,
  297.               "Domain name",     $domainname,
  298.               "FQDN",            $fqdn,
  299.               "IP Address",      $ipaddr,
  300.               "Network",         $network,
  301.               "Network mask",    $netmask,
  302.               "Broadcast addr",  $broadcast,
  303.               "Gateway",         $gateway,
  304.               "Nameservers",     $ns,
  305.               "--------------",  "",
  306.               "Done",            "" );
  307.     
  308.     return 0 if (! $ret);
  309.     return 1 if ($dialog_result eq "Done");
  310.     
  311.     &net_interface   if ($dialog_result eq "Interface");
  312.     &net_hostname    if ($dialog_result eq "Hostname");
  313.     &net_domainname  if ($dialog_result eq "Domain name");
  314.     &net_fqdn        if ($dialog_result eq "FQDN");
  315.     &net_ipaddr      if ($dialog_result eq "IP Address");
  316.     &net_network     if ($dialog_result eq "Network");
  317.     &net_netmask     if ($dialog_result eq "Network mask");
  318.     &net_broadcast   if ($dialog_result eq "Broadcast addr");
  319.     &net_gateway     if ($dialog_result eq "Gateway");
  320.     &net_nameservers if ($dialog_result eq "Nameservers");
  321.     }
  322. }
  323.  
  324. sub _uninit_net {
  325.     if ($net_up) {
  326.     &invoke("ifconfig $iface down");
  327.     $net_up = 0;
  328.     }
  329.     return 1;
  330. }
  331.  
  332. sub _init_net {
  333.     local ( $ret, $domain_bit, $string );
  334.  
  335.     open (FD, ">/etc/resolv.conf");
  336.     $string = &gen_resolv_conf;
  337.     print FD $string;
  338.     close FD;
  339.  
  340.     # We write this stuff so the X install can get at it
  341.     open (FD, ">/tmp/resolv.conf");
  342.     print FD $string;
  343.     close FD;
  344.  
  345.     open (FD, ">/tmp/network");
  346.     $string = &gen_network;
  347.     print FD $string;
  348.     close FD;
  349.  
  350.     open(FD, ">/tmp/ifcfg-$iface");
  351.     $string = &gen_ifcfg_eth;
  352.     print FD $string;
  353.     close FD;
  354.  
  355.     open(FD, ">/tmp/HOSTNAME");
  356.     $string = &gen_HOSTNAME;
  357.     print FD $string;
  358.     close FD;
  359.  
  360.     open(FD, ">/tmp/hosts");
  361.     $string = &gen_hosts;
  362.     print FD $string;
  363.     close FD;
  364.  
  365.     open(FD, ">/tmp/networks");
  366.     $string = &gen_networks;
  367.     print FD $string;
  368.     close FD;
  369.  
  370.     # Done writing temp stuff
  371.  
  372.     &invoke("hostname $fqdn");
  373.     $ret = &invoke("ifconfig $iface $ipaddr netmask $netmask broadcast $broadcast");
  374.     $ret = &invoke("route add -net $network netmask $netmask") unless ($ret != 0);
  375.     $ret = &invoke("route add default gw $gateway metric 1")
  376.     if (($gateway ne "none") && ($ret == 0));
  377.     
  378.     if ($ret != 0) {
  379.     $net_up = 0;
  380.     &rhs_msgbox ( "Error",
  381. <<EOM
  382. >
  383. An error occurred while setting up the network.
  384. Please check to see that it is configured properly.
  385. >
  386. EOM
  387.              , 70);
  388.     return 0;
  389.     }
  390.  
  391.     $net_up = 1;
  392.     return 1;
  393. }
  394.  
  395. ########## Individual Network config dialogs ####################
  396.  
  397. sub net_interface {
  398.  
  399.     if ($express_install) {
  400.     # just assume internal
  401.     # I dont even know if it will work with an "external"
  402.     $dialog_result = "internal";
  403.     } else {
  404.     if (! &rhs_menu ( "Network Configuration",
  405. <<EOM
  406. Which type of Ethernet adapter does this computer have?
  407. EOM
  408.              , 70, 2,
  409.              "internal", "Internal Ethernet card",
  410.              "external",  "D-Link external adapter")) {
  411.         return 0;
  412.     }
  413.     }
  414.  
  415.     $interface = $dialog_result;
  416.     if ($interface eq "internal") {
  417.     $iface = "eth0";
  418.     } else {
  419.     $iface = "dl0";
  420.     }
  421.     return 1;
  422. }
  423.  
  424. sub net_hostname {
  425.  
  426.     if (! &rhs_inputbox ( "Network Configuration",
  427. <<EOM
  428. What hostname have you selected for this computer? (Example: torgo)
  429. EOM
  430.              , 70, $hostname)) {
  431.     return 0;
  432.     }
  433.  
  434.     $hostname = $dialog_result;
  435.     return 1;
  436. }
  437.  
  438. sub net_domainname {
  439.  
  440.     if (! &rhs_inputbox ( "Network Configuration",
  441. <<EOM
  442. What domain name is this computer part of? (Example: redhat.com)
  443. EOM
  444.              , 70, $domainname)) {
  445.     return 0;
  446.     }
  447.  
  448.     $domainname = $dialog_result;
  449.     return 1;
  450. }
  451.  
  452. sub net_fqdn {
  453.     local ( $tmp, $ex );
  454.  
  455.     if ($hostname ne "" && $domainname ne "") {
  456.         $tmp = $hostname . "." . $domainname;
  457.     }
  458.     if ($fqdn ne "") {
  459.         $tmp = $fqdn;
  460.     }
  461.  
  462.     if (! &rhs_inputbox ( "Network Configuration",
  463. <<EOM
  464. >
  465. What is the fully qualified domain name (FQDN) of this computer? (Example: torgo.redhat.com)
  466. >
  467. EOM
  468.              , 70, $tmp)) {
  469.     return 0;
  470.     }
  471.  
  472.     $fqdn = $dialog_result;
  473.     return 1;
  474. }
  475.  
  476. sub net_ipaddr {
  477.  
  478.     if (! &rhs_inputbox ( "Network Configuration",
  479. <<EOM
  480. >
  481. What is the IP address of this computer? (Example: 199.183.24.2)
  482. >
  483. EOM
  484.              , 70, $ipaddr)) {
  485.     return 0;
  486.     }
  487.  
  488.     if ($dialog_result =~ /^(.*)\.(.*)\.(.*)\.(.*)$/) {
  489.         if ($1 > 223) {
  490.             if (! &rhs_yesno ( "Network Configuration",
  491. <<EOM
  492. >
  493. You have indicated a reserved network address. Please 
  494. confirm this choice.
  495. >
  496. EOM
  497.                   , 70 )) {
  498.         return 0;
  499.         }
  500.         }
  501.     }
  502.  
  503.     $ipaddr = $dialog_result;
  504.     return 1;
  505. }
  506.  
  507. sub net_network {
  508.     local ( $tmp );
  509.  
  510.     if ($ipaddr =~ /^(.*)\.(.*)\.(.*)\.(.*)$/) {
  511.         $tmp = $ipaddr;
  512.         $tmp =~ s/^(.*)\.(.*)\.(.*)\.(.*)$/$1.0.0.0/ if ($1 <= 26);
  513.         $tmp =~ s/^(.*)\.(.*)\.(.*)\.(.*)$/$1.$2.0.0/
  514.             if ($1 > 26 && $1 <= 128);
  515.         $tmp =~ s/^(.*)\.(.*)\.(.*)\.(.*)$/$1.$2.$3.0/ if ($1 > 128);
  516.     }
  517.     $tmp = $network if ($network ne "");
  518.  
  519.     if (! &rhs_inputbox ( "Network Configuration",
  520. <<EOM
  521. >
  522. What is the network address of this computer? (Example: 199.183.24.0)
  523. >
  524. EOM
  525.              , 70, $tmp)) {
  526.     return 0;
  527.     }
  528.  
  529.     $network = $dialog_result;
  530.     return 1;
  531. }
  532.  
  533. sub net_netmask {
  534.     local ( $tmp );
  535.  
  536.     if ($ipaddr =~ /^(.*)\.(.*)\.(.*)\.(.*)$/) {
  537.         $tmp = $ipaddr;
  538.         $tmp =~ s/^(.*)\.(.*)\.(.*)\.(.*)$/255.0.0.0/ if ($1 <= 26);
  539.         $tmp =~ s/^(.*)\.(.*)\.(.*)\.(.*)$/255.255.0.0/
  540.             if ($1 > 26 && $1 <= 128);
  541.         $tmp =~ s/^(.*)\.(.*)\.(.*)\.(.*)$/255.255.255.0/ if ($1 > 128);
  542.     }
  543.     $tmp = $netmask if ($netmask ne "");
  544.  
  545.     if (! &rhs_inputbox ( "Network Configuration",
  546. <<EOM
  547. >
  548. What is the netmask used by this computer? (Example: 255.255.255.0)
  549. >
  550. EOM
  551.              , 70, $tmp)) {
  552.     return 0;
  553.     }
  554.  
  555.     $netmask = $dialog_result;
  556.     return 1;
  557. }
  558.  
  559. sub net_broadcast {
  560.     local ( $tmp );
  561.  
  562.     if ($ipaddr =~ /^(.*)\.(.*)\.(.*)\.(.*)$/) {
  563.         $tmp = $ipaddr;
  564.         $tmp =~ s/^(.*)\.(.*)\.(.*)\.(.*)$/$1.255.255.255/ if ($1 <= 26);
  565.         $tmp =~ s/^(.*)\.(.*)\.(.*)\.(.*)$/$1.$2.255.255/
  566.             if ($1 > 26 && $1 <= 128);
  567.         $tmp =~ s/^(.*)\.(.*)\.(.*)\.(.*)$/$1.$2.$3.255/ if ($1 > 128);
  568.     }
  569.     $tmp = $broadcast if ($broadcast ne "");
  570.  
  571.     if (! &rhs_inputbox ( "Network Configuration",
  572. <<EOM
  573. >
  574. What is the broadcast address used by this computer? (Example: 199.183.24.255)
  575. >
  576. EOM
  577.              , 70, $tmp)) {
  578.     return 0;
  579.     }
  580.  
  581.     $broadcast = $dialog_result;
  582.     return 1;
  583. }
  584.  
  585. sub net_gateway {
  586.     local ( $tmp );
  587.  
  588.     if (! &rhs_yesno ( "Network Configuration",
  589. <<EOM
  590. >
  591. Does this computer use a gateway?
  592. >
  593. EOM
  594.               , 70 )) {
  595.     $gateway = "none";
  596.     return 1;
  597.     }
  598.  
  599.     if ($ipaddr =~ /^(.*)\.(.*)\.(.*)\.(.*)$/) {
  600.     $tmp = $ipaddr;
  601.     $tmp =~ s/^(.*)\.(.*)\.(.*)\.(.*)$/$1./ if ($1 <= 26);
  602.     $tmp =~ s/^(.*)\.(.*)\.(.*)\.(.*)$/$1.$2./
  603.         if ($1 > 26 && $1 <= 128);
  604.     $tmp =~ s/^(.*)\.(.*)\.(.*)\.(.*)$/$1.$2.$3./ if ($1 > 128);
  605.     }
  606.     $tmp = $gateway if ($gateway ne "" && $gateway ne "none");
  607.  
  608.     if (! &rhs_inputbox ( "Network Configuration",
  609. <<EOM
  610. >
  611. What is the IP address of the gateway used by this computer?
  612. >
  613. EOM
  614.              , 70, $tmp)) {
  615.     return 0;
  616.     }
  617.  
  618.     $gateway = $dialog_result;
  619.     return 1;
  620. }
  621.  
  622. sub net_nameservers {
  623.  
  624.     @nslist = ();
  625.     if (! &rhs_yesno ( "Network Configuration",
  626. <<EOM
  627. >
  628. Does this computer use a nameserver?
  629. >
  630. EOM
  631.               , 70)) {
  632.     return 0;
  633.     }
  634.  
  635.     do {
  636.         if (! &rhs_inputbox ( "Network Configuration",
  637. <<EOM
  638. >
  639. What is the IP address of the nameserver?
  640. >
  641. EOM
  642.                  , 70, "")) {
  643.         return 0;
  644.     }
  645.  
  646.         $nslist[@nslist] = $dialog_result;
  647.     } while (&rhs_yesno ( "Network Configuration",
  648. <<EOM
  649. >
  650. Does this computer use another nameserver?
  651. >
  652. EOM
  653.              , 70));
  654.  
  655.     return 1;
  656. }
  657.  
  658. sub gen_network {
  659.     local ( $res );
  660.     
  661.     $res =  "NETWORKING=yes\n";
  662.     $res .= "HOSTNAME=$fqdn\n";
  663.  
  664.     return $res;
  665. }
  666.  
  667. sub gen_ifcfg_eth {
  668.     return
  669. <<EOM
  670. #!/bin/sh
  671.  
  672. #>>>Device type: ethernet
  673.  
  674. #>>>Variable declarations:
  675. DEVICE=$iface
  676. IPADDR=$ipaddr
  677. NETMASK=$netmask
  678. NETWORK=$network
  679. BROADCAST=$broadcast
  680. GATEWAY=$gateway
  681. ONBOOT=yes
  682. #>>>End variable declarations
  683. EOM
  684.     ;
  685. }
  686.  
  687. sub gen_HOSTNAME {
  688.     return "$fqdn\n";
  689. }
  690.  
  691. sub gen_hosts {
  692.     local ( $res );
  693.     if ($net_configed == 1) {
  694.     $res =  sprintf("%-18s %-25s\n", "127.0.0.1", "localhost");
  695.         $res .= sprintf("%-18s %-25s %s\n", $ipaddr, $fqdn, $hostname);
  696.     } else {
  697.     $res =  sprintf("%-18s %-25s %s\n", "127.0.0.1", "localhost", $fqdn);
  698.     }
  699.     return $res;
  700. }
  701.  
  702. sub gen_resolv_conf {
  703.     local ( $res, $tmp, $domain_bit, $i );
  704.     
  705.     $res = "domain $domainname\n";
  706.  
  707.     # There needs to be a "search" line in here
  708.     $res .= "search";
  709.     $tmp = $domainname;
  710.     for (;;) {
  711.     last if (! ($tmp =~ /\./));
  712.     $domain_bit = $tmp;
  713.     $res .= " $domain_bit";
  714.     $tmp =~ s/^\w*\.//;
  715.     last if ($tmp eq $domain_bit);
  716.     }
  717.     $res .= "\n";
  718.  
  719.     for ($i = 0; $i < @nslist; $i++) {
  720.     $res .= "nameserver $nslist[$i]\n";
  721.     }
  722.  
  723.     return $res;
  724. }
  725.  
  726. sub gen_networks {
  727.     local ( $res );
  728.     $res = "loopback 127.0.0.0\n";
  729.     if ($net_configed == 1) {
  730.         $res .= "localnet $network\n";
  731.     }
  732.     return $res;
  733. }
  734.  
  735. sub finish_net {
  736.  
  737.     local ( $tmp, $domain_bit, $i, $string );
  738.  
  739.     # Indicate networking - we always have a loopback device
  740.     open(FD, ">$fsmount/etc/sysconfig/network");
  741.     $string = &gen_network;
  742.     print FD $string;
  743.     close FD;
  744.  
  745.     # Configure ethernet device
  746.     if ($net_configed != 0) {
  747.     open(FD, ">$fsmount/etc/sysconfig/network-scripts/ifcfg-$iface");
  748.     $string = &gen_ifcfg_eth;
  749.     print FD $string;
  750.     close FD;
  751.     }
  752.  
  753.     # /etc/HOSTNAME
  754.  
  755.     open(FD, ">$fsmount/etc/HOSTNAME");
  756.     $string = &gen_HOSTNAME;
  757.     print FD $string;
  758.     close FD;
  759.  
  760.     # /etc/hosts
  761.  
  762.     open(FD, ">$fsmount/etc/hosts");
  763.     $string = &gen_hosts;
  764.     print FD $string;
  765.     close FD;
  766.  
  767.     # /etc/networks
  768.  
  769.     open(FD, ">$fsmount/etc/networks");
  770.     $string = &gen_networks;
  771.     print FD $string;
  772.     close FD;
  773.  
  774.     # /etc/resolv.conf
  775.     
  776.     open (FD, ">$fsmount/etc/resolv.conf");
  777.     $string = &gen_resolv_conf;
  778.     print FD $string;
  779.     close FD;
  780.  
  781.     return 1;
  782. }
  783.  
  784. sub config_hostname {
  785.  
  786.     if ($net_configed) {
  787.     if (! $express_install) {
  788.         &rhs_msgbox("Notice",
  789. <<EOM
  790. >
  791. You have already configured your hostname
  792. to be $fqdn (during network configuration).
  793. This will be used unless you re-configure networking.
  794. >
  795. EOM
  796.             , 60);
  797.     }
  798.     return 1;
  799.     }
  800.  
  801.     if (! &rhs_inputbox("Hostname",
  802. <<EOM
  803. >
  804. Please enter the hostname that you wish to use for your machine.
  805. >
  806. EOM
  807.             , 60, "")) {
  808.     return 0;
  809.     }
  810.  
  811.     $hostname = $dialog_result;
  812.     $fqdn = $dialog_result;
  813.     &invoke("hostname $fqdn");
  814.  
  815.     return 1;
  816. }
  817.  
  818. sub net_reset {
  819.  
  820.     &_uninit_net;
  821.     $net_configed = 0;
  822. }
  823.  
  824. ##########################
  825. 1;
  826.