Re: [PATCH rhel6-branch] Honour dhcptimeout set for NM in anaconda (#769145)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Ack.

--
Vratislav Podizmek

On Fri, 2012-04-06 at 14:28 +0200, Radek Vykydal wrote:
> Original patch for the BZ was incomplete - anaconda did set the
> timeout for NM but didn't use it when waiting for device activation.
> 
> Related: rhbz#769145
> ---
>  isys/iface.c    |   10 +++++-----
>  isys/iface.h    |    2 +-
>  loader/loader.c |    4 ++--
>  loader/net.c    |   13 +++++++------
>  loader/net.h    |    4 +++-
>  5 files changed, 18 insertions(+), 15 deletions(-)
> 
> diff --git a/isys/iface.c b/isys/iface.c
> index db3027f..64a7663 100644
> --- a/isys/iface.c
> +++ b/isys/iface.c
> @@ -474,11 +474,11 @@ gboolean is_iface_activated(char * ifname) {
>  /*
>   * Wait for NetworkManager to appear on the system bus
>   */
> -int wait_for_nm(void) {
> +int wait_for_nm(int seconds) {
>      int count = 0;
>  
>      /* send message and block until a reply or error comes back */
> -    while (count < 45) {
> +    while (count < seconds) {
>          if (is_nm_running())
>              return 0;
>  
> @@ -491,9 +491,9 @@ int wait_for_nm(void) {
>  
>  /*
>   * Start NetworkManager -- requires that you have already written out the
> - * control files in /etc/sysconfig for the interface.
> + * control files in /etc/sysconfig for the interface. Timeout in seconds.
>   */
> -int iface_start_NetworkManager(void) {
> +int iface_start_NetworkManager(int timeout) {
>      pid_t pid;
>  
>      if (is_nm_running())
> @@ -520,7 +520,7 @@ int iface_start_NetworkManager(void) {
>      } else if (pid == -1) {
>          return 1;
>      } else {
> -        return wait_for_nm();
> +        return wait_for_nm(timeout);
>      }
>  
>      return 0;
> diff --git a/isys/iface.h b/isys/iface.h
> index 567f5ee..933ac84 100644
> --- a/isys/iface.h
> +++ b/isys/iface.h
> @@ -157,7 +157,7 @@ gboolean is_iface_activated(char * ifname);
>  /*
>   * Start NetworkManager
>   */
> -int iface_start_NetworkManager(void);
> +int iface_start_NetworkManager(int timeout);
>  
>  /*
>   * Set Maximum Transfer Unit (MTU) on specified interface
> diff --git a/loader/loader.c b/loader/loader.c
> index 0e6be44..3143449 100644
> --- a/loader/loader.c
> +++ b/loader/loader.c
> @@ -2073,7 +2073,7 @@ int main(int argc, char ** argv) {
>      loaderData.method = -1;
>      loaderData.fw_loader_pid = -1;
>      loaderData.fw_search_pathz_len = -1;
> -    loaderData.dhcpTimeout = 0;
> +    loaderData.dhcpTimeout = NM_DHCP_TIMEOUT;
>  
>      extraArgs[0] = NULL;
>      parseCmdLineFlags(&loaderData, cmdLine);
> @@ -2254,7 +2254,7 @@ int main(int argc, char ** argv) {
>  #endif
>  
>      /* Start NetworkManager now so it's always available to talk to. */
> -    if (iface_start_NetworkManager())
> +    if (iface_start_NetworkManager(loaderData.dhcpTimeout))
>          logMessage(INFO, "failed to start NetworkManager");
>  
>      if (!FL_CMDLINE(flags))
> diff --git a/loader/net.c b/loader/net.c
> index af6c90c..14efbf0 100644
> --- a/loader/net.c
> +++ b/loader/net.c
> @@ -487,7 +487,7 @@ int readNetConfig(char * device, iface_t * iface,
>              return LOADER_BACK;
>          }
>  
> -        i = wait_for_iface_activation(iface->device);
> +        i = wait_for_iface_activation(iface->device, iface->dhcptimeout);
>          newtPopWindow();
>  
>          if (i > 0) {
> @@ -548,7 +548,7 @@ int readNetConfig(char * device, iface_t * iface,
>          return LOADER_BACK;
>      }
>  
> -    i = wait_for_iface_activation(iface->device);
> +    i = wait_for_iface_activation(iface->device, iface->dhcptimeout);
>      newtPopWindow();
>  
>      if (i > 0) {
> @@ -1585,7 +1585,7 @@ void setKickstartNetwork(struct loaderData_s * loaderData, int argc,
>      iface_t iface;
>      gchar *bootProto = NULL, *device = NULL, *class = NULL, *ethtool = NULL;
>      gchar *essid = NULL, *wepkey = NULL, *onboot = NULL, *gateway = NULL;
> -    gint mtu = 1500, dhcpTimeout = 0;
> +    gint mtu = 1500;
>      gboolean noipv4 = FALSE, noipv6 = FALSE, noDns = FALSE, noksdev = FALSE, activate = FALSE, nodefroute=FALSE, firstnetdev=FALSE;
>      GOptionContext *optCon = g_option_context_new(NULL);
>      GError *optErr = NULL;
> @@ -1622,7 +1622,7 @@ void setKickstartNetwork(struct loaderData_s * loaderData, int argc,
>          { "activate", 0, 0, G_OPTION_ARG_NONE, &activate, NULL, NULL },
>          { "firstnetdev", 0, 0, G_OPTION_ARG_NONE, &firstnetdev, NULL, NULL },
>          { "nodefroute", 0, 0, G_OPTION_ARG_NONE, &nodefroute, NULL, NULL },
> -        { "dhcptimeout", 0, 0, G_OPTION_ARG_INT, &dhcpTimeout, NULL, NULL },
> +        { "dhcptimeout", 0, 0, G_OPTION_ARG_INT, &loaderData->dhcpTimeout, NULL, NULL },
>          { NULL },
>      };
>  
> @@ -1650,6 +1650,7 @@ void setKickstartNetwork(struct loaderData_s * loaderData, int argc,
>      free(loaderData->wepkey);
>      loaderData->wepkey = NULL;
>      loaderData->mtu = 0;
> +    loaderData->dhcpTimeout = NM_DHCP_TIMEOUT;
>  
>  #ifdef ENABLE_IPV6
>      free(loaderData->ipv6);
> @@ -2237,7 +2238,7 @@ void splitHostname (char *str, char **host, char **port)
>  /*
>   * Wait for activation of iface by NetworkManager, return non-zero on error.
>   */
> -int wait_for_iface_activation(char *ifname) {
> +int wait_for_iface_activation(char *ifname, int timeout) {
>      int count = 0, i;
>      NMClient *client = NULL;
>      NMState state;
> @@ -2297,7 +2298,7 @@ int wait_for_iface_activation(char *ifname) {
>      }
>  
>      /* send message and block until a reply or error comes back */
> -    while (count < 45) {
> +    while (count < timeout) {
>          /* pump the loop again to clear the messages */
>          while (g_main_context_pending (ctx)) {
>              g_main_context_iteration (ctx, FALSE);
> diff --git a/loader/net.h b/loader/net.h
> index e23582a..a35dd5b 100644
> --- a/loader/net.h
> +++ b/loader/net.h
> @@ -34,6 +34,8 @@
>  #define SYSCONFIG_PATH       "/etc/sysconfig"
>  #define NETWORK_SCRIPTS_PATH "/etc/sysconfig/network-scripts"
>  
> +#define NM_DHCP_TIMEOUT 45
> +
>  struct intfconfig_s {
>      newtComponent ipv4Entry, cidr4Entry;
>      newtComponent gwEntry, nsEntry;
> @@ -80,7 +82,7 @@ int activateDevice(struct loaderData_s * loaderData,
>                         iface_t * iface);
>  int disconnectDevice(char *device);
>  void splitHostname (char *str, char **host, char **port);
> -int wait_for_iface_activation(char * ifname);
> +int wait_for_iface_activation(char * ifname, int timeout);
>  int wait_for_iface_disconnection(char *ifname);
>  int isURLRemote(char *url);
>  int split_ipv6addr_prefix_length(char *str, char **address, char **prefix);


_______________________________________________
Anaconda-devel-list mailing list
Anaconda-devel-list@xxxxxxxxxx
https://www.redhat.com/mailman/listinfo/anaconda-devel-list


[Index of Archives]     [Kickstart]     [Fedora Users]     [Fedora Legacy List]     [Fedora Maintainers]     [Fedora Desktop]     [Fedora SELinux]     [Big List of Linux Books]     [Yosemite News]     [Yosemite Photos]     [KDE Users]     [Fedora Tools]
  Powered by Linux