summaryrefslogtreecommitdiffstats
path: root/usr.sbin
diff options
context:
space:
mode:
authorbrian <brian@FreeBSD.org>2000-01-21 00:33:27 +0000
committerbrian <brian@FreeBSD.org>2000-01-21 00:33:27 +0000
commita29610fe9a9a062d76bd0f17dd006ce6997c60c4 (patch)
tree0e45f01178ebc6c99f48edcb1267b522780b3b0c /usr.sbin
parentb5a9af645e9609d1aa46a41309b617b059bcf66e (diff)
downloadFreeBSD-src-a29610fe9a9a062d76bd0f17dd006ce6997c60c4.zip
FreeBSD-src-a29610fe9a9a062d76bd0f17dd006ce6997c60c4.tar.gz
Use TUNSIFPID when we change our PID (if it exists).
Diffstat (limited to 'usr.sbin')
-rw-r--r--usr.sbin/ppp/bundle.c11
-rw-r--r--usr.sbin/ppp/bundle.h1
-rw-r--r--usr.sbin/ppp/main.c1
3 files changed, 12 insertions, 1 deletions
diff --git a/usr.sbin/ppp/bundle.c b/usr.sbin/ppp/bundle.c
index 9ee00e2..a15b63e 100644
--- a/usr.sbin/ppp/bundle.c
+++ b/usr.sbin/ppp/bundle.c
@@ -30,7 +30,7 @@
#include <sys/socket.h>
#include <netinet/in.h>
#include <net/if.h>
-#include <net/if_tun.h> /* For TUNSIFMODE & TUNSLMODE */
+#include <net/if_tun.h> /* For TUNSIFMODE, TUNSLMODE & TUNSIFPID*/
#include <arpa/inet.h>
#include <net/route.h>
#include <netinet/in_systm.h>
@@ -1738,6 +1738,7 @@ bundle_setsid(struct bundle *bundle, int holdsession)
read(fds[0], &done, 1); /* uu_locks are mine ! */
close(fds[0]);
setsid();
+ bundle_ChangedPID(bundle);
log_Printf(LogPHASE, "%d -> %d: %s session control\n",
(int)orig, (int)getpid(),
holdsession ? "Passed" : "Dropped");
@@ -1940,3 +1941,11 @@ bundle_WantAutoloadTimer(struct bundle *bundle)
return 0;
}
+
+void
+bundle_ChangedPID(struct bundle *bundle)
+{
+#ifdef TUNSIFPID
+ ioctl(bundle->dev.fd, TUNSIFPID, 0);
+#endif
+}
diff --git a/usr.sbin/ppp/bundle.h b/usr.sbin/ppp/bundle.h
index f52ed0c..613924c 100644
--- a/usr.sbin/ppp/bundle.h
+++ b/usr.sbin/ppp/bundle.h
@@ -187,3 +187,4 @@ extern void bundle_AdjustFilters(struct bundle *, struct in_addr *,
extern void bundle_CalculateBandwidth(struct bundle *);
extern void bundle_AutoAdjust(struct bundle *, int, int);
extern int bundle_WantAutoloadTimer(struct bundle *);
+extern void bundle_ChangedPID(struct bundle *);
diff --git a/usr.sbin/ppp/main.c b/usr.sbin/ppp/main.c
index 18c7529..10269e6 100644
--- a/usr.sbin/ppp/main.c
+++ b/usr.sbin/ppp/main.c
@@ -463,6 +463,7 @@ main(int argc, char **argv)
bundle->notify.fd = bgpipe[1];
}
+ bundle_ChangedPID(bundle);
bundle_LockTun(bundle); /* we have a new pid */
}
OpenPOWER on IntegriCloud