Contents of /trunk/dhcpcd/patches/dhcpcd-1.3.22-pl4-keepCacheAndResolv.patch
Parent Directory | Revision Log
Revision 144 -
(show annotations)
(download)
Tue May 8 20:06:05 2007 UTC (17 years, 4 months ago) by niro
File size: 4668 byte(s)
Tue May 8 20:06:05 2007 UTC (17 years, 4 months ago) by niro
File size: 4668 byte(s)
-import
1 | diff -ru dhcpcd-1.3.22-pl4-orig/client.c dhcpcd-1.3.22-pl4/client.c |
2 | --- dhcpcd-1.3.22-pl4-orig/client.c 2003-01-01 09:24:37.000000000 +0800 |
3 | +++ dhcpcd-1.3.22-pl4/client.c 2003-06-17 11:20:35.000000000 +0800 |
4 | @@ -1076,10 +1076,16 @@ |
5 | return &dhcpBound; |
6 | } |
7 | /*****************************************************************************/ |
8 | -void *dhcpRelease() |
9 | +void *dhcpRelease(int deleteCacheFlag) |
10 | { |
11 | struct sockaddr addr; |
12 | - deleteDhcpCache(); |
13 | + if ( deleteCacheFlag ) { |
14 | + if ( DebugFlag ) syslog (LOG_DEBUG,"Deleting Dhcp Cache"); |
15 | + deleteDhcpCache(); |
16 | + } else { |
17 | + if ( DebugFlag ) syslog (LOG_DEBUG,"Not Deleting Dhcp Cache"); |
18 | + } |
19 | + |
20 | if ( DhcpIface.ciaddr == 0 ) return &dhcpInit; |
21 | |
22 | buildDhcpRelease(random()); |
23 | diff -ru dhcpcd-1.3.22-pl4-orig/client.h dhcpcd-1.3.22-pl4/client.h |
24 | --- dhcpcd-1.3.22-pl4-orig/client.h 2002-12-31 13:15:33.000000000 +0800 |
25 | +++ dhcpcd-1.3.22-pl4/client.h 2003-06-17 11:21:51.000000000 +0800 |
26 | @@ -197,7 +197,7 @@ |
27 | void *dhcpBound(); |
28 | void *dhcpRenew(); |
29 | void *dhcpRebind(); |
30 | -void *dhcpRelease(); |
31 | +void *dhcpRelease(int deleteCacheFlag); |
32 | void *dhcpStop(); |
33 | void *dhcpInform(); |
34 | #ifdef ARPCHECK |
35 | diff -ru dhcpcd-1.3.22-pl4-orig/dhcpcd.8 dhcpcd-1.3.22-pl4/dhcpcd.8 |
36 | --- dhcpcd-1.3.22-pl4-orig/dhcpcd.8 2003-01-01 09:31:31.000000000 +0800 |
37 | +++ dhcpcd-1.3.22-pl4/dhcpcd.8 2003-06-17 13:11:12.000000000 +0800 |
38 | @@ -9,7 +9,7 @@ |
39 | .in +.5i |
40 | .ti -.5i |
41 | dhcpcd |
42 | -\%[\-dknrBCDHNRSTY] |
43 | +\%[\-dknrzBCDHNRSTY] |
44 | \%[\-t\ <timeout>] |
45 | \%[\-c\ <ExecFilePath>] |
46 | \%[-h\ <hostname>] |
47 | @@ -76,7 +76,7 @@ |
48 | receives |
49 | .B SIGHUP |
50 | it will send |
51 | -.B DCHP_RELEASE |
52 | +.B DHCP_RELEASE |
53 | message to the server and destroy dhcpcd cache. In a case |
54 | .B dhcpcd |
55 | receives |
56 | @@ -93,6 +93,21 @@ |
57 | from DHCP server which was assigned before the |
58 | system went down. |
59 | .TP |
60 | +.BI \-z |
61 | +Sends |
62 | +.B SIGUSR1 |
63 | +signal to the |
64 | +.B dhcpcd |
65 | +process that is currently running. If |
66 | +.B dhcpcd |
67 | +receives |
68 | +.B SIGUSR1 |
69 | +it will send |
70 | +.B DHCP_RELEASE |
71 | +message to the server |
72 | +.B without |
73 | +destroying the dhcpcd cache. |
74 | +.TP |
75 | .BI \-n |
76 | Sends |
77 | .B SIGALRM |
78 | diff -ru dhcpcd-1.3.22-pl4-orig/dhcpcd.c dhcpcd-1.3.22-pl4/dhcpcd.c |
79 | --- dhcpcd-1.3.22-pl4-orig/dhcpcd.c 2003-01-01 09:26:32.000000000 +0800 |
80 | +++ dhcpcd-1.3.22-pl4/dhcpcd.c 2003-06-17 11:07:34.000000000 +0800 |
81 | @@ -141,6 +141,10 @@ |
82 | s++; |
83 | killFlag=SIGALRM; |
84 | goto prgs; |
85 | + case 'z': |
86 | + s++; |
87 | + killFlag=SIGUSR1; |
88 | + goto prgs; |
89 | case 'd': |
90 | s++; |
91 | DebugFlag=1; |
92 | @@ -325,7 +329,7 @@ |
93 | default: |
94 | usage: print_version(); |
95 | fprintf(stderr, |
96 | -"Usage: dhcpcd [-dknrBCDHNRSTY] [-l leasetime] [-h hostname] [-t timeout]\n\ |
97 | +"Usage: dhcpcd [-dknrzBCDHNRSTY] [-l leasetime] [-h hostname] [-t timeout]\n\ |
98 | [-i vendorClassID] [-I ClientID] [-c filename] [-s [ipaddr]]\n\ |
99 | [-w windowsize] [-L ConfigDir] [-G [gateway]] [interface]\n"); |
100 | exit(1); |
101 | diff -ru dhcpcd-1.3.22-pl4-orig/dhcpconfig.c dhcpcd-1.3.22-pl4/dhcpconfig.c |
102 | --- dhcpcd-1.3.22-pl4-orig/dhcpconfig.c 2002-12-30 06:05:44.000000000 +0800 |
103 | +++ dhcpcd-1.3.22-pl4/dhcpconfig.c 2003-06-17 13:46:31.000000000 +0800 |
104 | @@ -334,6 +334,16 @@ |
105 | ((unsigned char *)&DhcpIface.ciaddr)[1], |
106 | ((unsigned char *)&DhcpIface.ciaddr)[2], |
107 | ((unsigned char *)&DhcpIface.ciaddr)[3]); |
108 | + |
109 | + /* In the case where machine dies for some reason, resolv.conf.sv would |
110 | + * not have been restored to original glory |
111 | + */ |
112 | + if ( 1+rename(""RESOLV_CONF".sv",RESOLV_CONF) ) { |
113 | + if ( DebugFlag ) syslog (LOG_DEBUG, "Restored resolv.conf.sv from improper shutdown"); |
114 | + } else { |
115 | + if ( DebugFlag ) syslog (LOG_DEBUG, "No resolv.conf.sv to restore"); |
116 | + } |
117 | + |
118 | if ( ReplResolvConf ) |
119 | { |
120 | resolv_renamed=1+rename(RESOLV_CONF,""RESOLV_CONF".sv"); |
121 | diff -ru dhcpcd-1.3.22-pl4-orig/signals.c dhcpcd-1.3.22-pl4/signals.c |
122 | --- dhcpcd-1.3.22-pl4-orig/signals.c 2002-01-21 06:51:46.000000000 +0800 |
123 | +++ dhcpcd-1.3.22-pl4/signals.c 2003-06-17 11:29:10.000000000 +0800 |
124 | @@ -114,13 +114,15 @@ |
125 | else |
126 | { |
127 | if ( sig == SIGHUP ) |
128 | - { |
129 | - dhcpRelease(); |
130 | - /* allow time for final packets to be transmitted before shutting down */ |
131 | - /* otherwise 2.0 drops unsent packets. fixme: find a better way than sleep */ |
132 | - sleep(1); |
133 | - } |
134 | - syslog(LOG_ERR,"terminating on signal %d\n",sig); |
135 | + /* Dhcp release with Cache file deletion */ |
136 | + dhcpRelease(1); |
137 | + else if ( sig == SIGUSR1) |
138 | + /* Dhcp release without Cache file deletion */ |
139 | + dhcpRelease(0); |
140 | + /* allow time for final packets to be transmitted before shutting down */ |
141 | + /* otherwise 2.0 drops unsent packets. fixme: find a better way than sleep */ |
142 | + sleep(1); |
143 | + syslog(LOG_ERR,"terminating on signal %d\n",sig); |
144 | } |
145 | dhcpStop(); |
146 | deletePidFile(); |