Re: Small diff to make dhclient(8) go to background immediately

2008-05-20 Thread Jona Joachim
On 2008-05-19, Cesare Gargano [EMAIL PROTECTED] wrote:
 On 19/05/08 15:50 +0200, Cesare Gargano wrote:
 On 18/05/08 17:20 +0200, Jona Joachim wrote:
  I very much appreciate the work of reyk@ on dhclient to make it renew the 
  lease when the
  link is lost. However it might happen that you don't have a link at the 
  moment where
  you launch dhclient but you know that you might get a link afterwards.
  This is true when you launch your laptop somewhere where you have wifi 
  connectivity
  but unfortunately you're in a spot where you don't currently receive it.
  If you specify 'dhcp' in hostname.if you will have to wait until 
  dhclient times out
  or hit Ctrl-C at startup.
  This tiny patch adds an option to dhclient to tell it to just go into 
  background and wait
  until you get a link.
  
  I would appreciate any comments.
  Thanks!
  
  
  Index: dhclient.c
(snip diff)
 
 Ehi! Your diff is already there!
 
 cat /etc/dhclient.conf
 link_timeout 0;
   
 is link-timeout

 Ehm! Enjoy!

You're right, I guess I was making things overly complicated...



Re: Small diff to make dhclient(8) go to background immediately

2008-05-20 Thread Jona Joachim
On 2008-05-19, Cesare Gargano [EMAIL PROTECTED] wrote:
 On 19/05/08 15:50 +0200, Cesare Gargano wrote:
 On 18/05/08 17:20 +0200, Jona Joachim wrote:
  I very much appreciate the work of reyk@ on dhclient to make it renew the 
  lease when the
  link is lost. However it might happen that you don't have a link at the 
  moment where
  you launch dhclient but you know that you might get a link afterwards.
  This is true when you launch your laptop somewhere where you have wifi 
  connectivity
  but unfortunately you're in a spot where you don't currently receive it.
  If you specify 'dhcp' in hostname.if you will have to wait until 
  dhclient times out
  or hit Ctrl-C at startup.
  This tiny patch adds an option to dhclient to tell it to just go into 
  background and wait
  until you get a link.
  
  I would appreciate any comments.
  Thanks!
  
  
  Index: dhclient.c
(snip diff)
 
 Ehi! Your diff is already there!
 
 cat /etc/dhclient.conf
 link_timeout 0;
   
 is link-timeout

 Ehm! Enjoy!

You're right, I guess I was making things overly complicated.



Re: Small diff to make dhclient(8) go to background immediately

2008-05-19 Thread Cesare Gargano
On 19/05/08 15:50 +0200, Cesare Gargano wrote:
 On 18/05/08 17:20 +0200, Jona Joachim wrote:
  I very much appreciate the work of reyk@ on dhclient to make it renew the 
  lease when the
  link is lost. However it might happen that you don't have a link at the 
  moment where
  you launch dhclient but you know that you might get a link afterwards.
  This is true when you launch your laptop somewhere where you have wifi 
  connectivity
  but unfortunately you're in a spot where you don't currently receive it.
  If you specify 'dhcp' in hostname.if you will have to wait until dhclient 
  times out
  or hit Ctrl-C at startup.
  This tiny patch adds an option to dhclient to tell it to just go into 
  background and wait
  until you get a link.
  
  I would appreciate any comments.
  Thanks!
  
  
  Index: dhclient.c
  ===
  RCS file: /cvs/src/sbin/dhclient/dhclient.c,v
  retrieving revision 1.118
  diff -u -r1.118 dhclient.c
  --- dhclient.c  9 May 2008 05:19:14 -   1.118
  +++ dhclient.c  18 May 2008 15:11:53 -
  @@ -253,7 +253,7 @@
   int
   main(int argc, char *argv[])
   {
  -   int  ch, fd, quiet = 0, i = 0, pipe_fd[2];
  +   int  ch, fd, quiet = 0, background = 0, i = 0, pipe_fd[2];
  extern char *__progname;
  struct passwd *pw;
   
  @@ -261,8 +261,11 @@
  openlog(__progname, LOG_PID | LOG_NDELAY, DHCPD_LOG_FACILITY);
  setlogmask(LOG_UPTO(LOG_INFO));
   
  -   while ((ch = getopt(argc, argv, c:dl:qu)) != -1)
  +   while ((ch = getopt(argc, argv, bc:dl:qu)) != -1)
  switch (ch) {
  +   case 'b':
  +   background = 1;
  +   break;
  case 'c':
  path_dhclient_conf = optarg;
  break;
  @@ -319,6 +322,9 @@
   
  read_client_conf();
   
  +   if (background)
  +   goto dispatch; 
  +
  if (!(ifi-linkstat = interface_link_status(ifi-name))) {
  fprintf(stderr, %s: no link ..., ifi-name);
  if (config-link_timeout == 0) {
  @@ -409,7 +415,7 @@
   {
  extern char *__progname;
   
  -   fprintf(stderr, usage: %s [-dqu] [-c file] [-l file] interface\n,
  +   fprintf(stderr, usage: %s [-bdqu] [-c file] [-l file] interface\n,
  __progname);
  exit(1);
   }
  
 
 
 Ehi! Your diff is already there!
 
 cat /etc/dhclient.conf
 link_timeout 0;
  
is link-timeout

Ehm! Enjoy!

 
 It works!



Re: Small diff to make dhclient(8) go to background immediately

2008-05-19 Thread Cesare Gargano
On 18/05/08 17:20 +0200, Jona Joachim wrote:
 I very much appreciate the work of reyk@ on dhclient to make it renew the 
 lease when the
 link is lost. However it might happen that you don't have a link at the 
 moment where
 you launch dhclient but you know that you might get a link afterwards.
 This is true when you launch your laptop somewhere where you have wifi 
 connectivity
 but unfortunately you're in a spot where you don't currently receive it.
 If you specify 'dhcp' in hostname.if you will have to wait until dhclient 
 times out
 or hit Ctrl-C at startup.
 This tiny patch adds an option to dhclient to tell it to just go into 
 background and wait
 until you get a link.
 
 I would appreciate any comments.
 Thanks!
 
 
 Index: dhclient.c
 ===
 RCS file: /cvs/src/sbin/dhclient/dhclient.c,v
 retrieving revision 1.118
 diff -u -r1.118 dhclient.c
 --- dhclient.c  9 May 2008 05:19:14 -   1.118
 +++ dhclient.c  18 May 2008 15:11:53 -
 @@ -253,7 +253,7 @@
  int
  main(int argc, char *argv[])
  {
 -   int  ch, fd, quiet = 0, i = 0, pipe_fd[2];
 +   int  ch, fd, quiet = 0, background = 0, i = 0, pipe_fd[2];
 extern char *__progname;
 struct passwd *pw;
  
 @@ -261,8 +261,11 @@
 openlog(__progname, LOG_PID | LOG_NDELAY, DHCPD_LOG_FACILITY);
 setlogmask(LOG_UPTO(LOG_INFO));
  
 -   while ((ch = getopt(argc, argv, c:dl:qu)) != -1)
 +   while ((ch = getopt(argc, argv, bc:dl:qu)) != -1)
 switch (ch) {
 +   case 'b':
 +   background = 1;
 +   break;
 case 'c':
 path_dhclient_conf = optarg;
 break;
 @@ -319,6 +322,9 @@
  
 read_client_conf();
  
 +   if (background)
 +   goto dispatch; 
 +
 if (!(ifi-linkstat = interface_link_status(ifi-name))) {
 fprintf(stderr, %s: no link ..., ifi-name);
 if (config-link_timeout == 0) {
 @@ -409,7 +415,7 @@
  {
 extern char *__progname;
  
 -   fprintf(stderr, usage: %s [-dqu] [-c file] [-l file] interface\n,
 +   fprintf(stderr, usage: %s [-bdqu] [-c file] [-l file] interface\n,
 __progname);
 exit(1);
  }
 


Ehi! Your diff is already there!

cat /etc/dhclient.conf
link_timeout 0;

It works!