Remove bugfix-dhcp-4.2.5-check-dhclient-pid.patch
This commit is contained in:
parent
686dc9fa41
commit
b0ea91639e
@ -1,75 +0,0 @@
|
|||||||
--- a/client/dhclient.c 2019-01-25 14:34:46.996000000 +0800
|
|
||||||
+++ b/client/dhclient.c 2019-01-25 14:34:16.382000000 +0800
|
|
||||||
@@ -114,6 +114,8 @@
|
|
||||||
|
|
||||||
int bootp_broadcast_always = 0;
|
|
||||||
|
|
||||||
+int buf_size = 128;
|
|
||||||
+
|
|
||||||
extern struct option *default_requested_options[];
|
|
||||||
|
|
||||||
void run_stateless(int exit_mode, u_int16_t port);
|
|
||||||
@@ -129,6 +131,8 @@
|
|
||||||
static void dhclient_ddns_cb_free(dhcp_ddns_cb_t *ddns_cb,
|
|
||||||
char* file, int line);
|
|
||||||
|
|
||||||
+static int check_dhclient_pid(pid_t pid);
|
|
||||||
+
|
|
||||||
/*!
|
|
||||||
*
|
|
||||||
* \brief Print the generic usage message
|
|
||||||
@@ -682,7 +686,8 @@
|
|
||||||
e = fscanf(pidfd, "%ld\n", &temp);
|
|
||||||
oldpid = (pid_t)temp;
|
|
||||||
|
|
||||||
- if (e != 0 && e != EOF && oldpid) {
|
|
||||||
+ if (e != 0 && e != EOF) {
|
|
||||||
+ if (oldpid && check_dhclient_pid(oldpid)) {
|
|
||||||
if (kill(oldpid, SIGTERM) == 0) {
|
|
||||||
log_info("Killed old client process");
|
|
||||||
(void) unlink(path_dhclient_pid);
|
|
||||||
@@ -698,6 +703,7 @@
|
|
||||||
log_info("Removed stale PID file");
|
|
||||||
(void) unlink(path_dhclient_pid);
|
|
||||||
}
|
|
||||||
+ }
|
|
||||||
}
|
|
||||||
fclose(pidfd);
|
|
||||||
} else {
|
|
||||||
@@ -738,7 +744,7 @@
|
|
||||||
oldpid = (pid_t)temp;
|
|
||||||
|
|
||||||
if (e != 0 && e != EOF) {
|
|
||||||
- if (oldpid) {
|
|
||||||
+ if (oldpid && check_dhclient_pid(oldpid)) {
|
|
||||||
if (kill(oldpid, SIGTERM) == 0)
|
|
||||||
unlink(path_dhclient_pid);
|
|
||||||
}
|
|
||||||
@@ -6045,3 +6051,27 @@
|
|
||||||
log_error("dhcp4o6_stop: send(): %m");
|
|
||||||
}
|
|
||||||
#endif /* DHCPv6 && DHCP4o6 */
|
|
||||||
+
|
|
||||||
+static int check_dhclient_pid(pid_t pid) {
|
|
||||||
+ char proc_pid_path[buf_size];
|
|
||||||
+ char task_name[buf_size];
|
|
||||||
+
|
|
||||||
+ memset(proc_pid_path, 0, buf_size);
|
|
||||||
+ memset(task_name, 0, buf_size);
|
|
||||||
+
|
|
||||||
+ snprintf(proc_pid_path, buf_size - 1, "/proc/%d/comm", pid);
|
|
||||||
+
|
|
||||||
+ FILE* fp = fopen(proc_pid_path, "r");
|
|
||||||
+ if(fp != NULL) {
|
|
||||||
+ if( fgets(task_name, buf_size, fp) == NULL ) {
|
|
||||||
+ fclose(fp);
|
|
||||||
+ return 0;
|
|
||||||
+ }
|
|
||||||
+ fclose(fp);
|
|
||||||
+ if(strncmp(task_name, "dhclient", 8) == 0) {
|
|
||||||
+ return 1;
|
|
||||||
+ }
|
|
||||||
+ }
|
|
||||||
+
|
|
||||||
+ return 0;
|
|
||||||
+}
|
|
||||||
Loading…
x
Reference in New Issue
Block a user