123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- diff -Nru ppp-2.4.5.orig/pppd/options.c ppp-2.4.5/pppd/options.c
- --- ppp-2.4.5.orig/pppd/options.c 2010-08-08 09:44:29.000000000 +0200
- +++ ppp-2.4.5/pppd/options.c 2010-08-08 10:07:50.000000000 +0200
- @@ -94,6 +94,7 @@
- int kdebugflag = 0; /* Tell kernel to print debug messages */
- int default_device = 1; /* Using /dev/tty or equivalent */
- char devnam[MAXPATHLEN]; /* Device name */
- +int defaultmetric = 0; /* Metric of the default route */
- bool nodetach = 0; /* Don't detach from controlling tty */
- bool updetach = 0; /* Detach once link is up */
- int maxconnect = 0; /* Maximum connect time */
- @@ -289,6 +290,10 @@
- "Number of seconds to wait for child processes at exit",
- OPT_PRIO },
-
- + { "defaultmetric", o_int, &defaultmetric,
- + "The metric of the default route",
- + OPT_LIMITS, 0, 32766 },
- +
- #ifdef HAVE_MULTILINK
- { "multilink", o_bool, &multilink,
- "Enable multilink operation", OPT_PRIO | 1 },
- diff -Nru ppp-2.4.5.orig/pppd/pppd.8 ppp-2.4.5/pppd/pppd.8
- --- ppp-2.4.5.orig/pppd/pppd.8 2010-08-08 10:06:57.000000000 +0200
- +++ ppp-2.4.5/pppd/pppd.8 2010-08-08 10:07:50.000000000 +0200
- @@ -121,6 +121,9 @@
- This entry is removed when the PPP connection is broken. This option
- is privileged if the \fInodefaultroute\fR option has been specified.
- .TP
- +.B defaultmetric \fIn
- +The metric of the default route configured by pppd; default is 0.
- +.TP
- .B disconnect \fIscript
- Execute the command specified by \fIscript\fR, by passing it to a
- shell, after
- diff -Nru ppp-2.4.5.orig/pppd/pppd.h ppp-2.4.5/pppd/pppd.h
- --- ppp-2.4.5.orig/pppd/pppd.h 2010-08-08 09:58:19.000000000 +0200
- +++ ppp-2.4.5/pppd/pppd.h 2010-08-08 10:07:50.000000000 +0200
- @@ -276,6 +276,7 @@
- extern int kdebugflag; /* Tell kernel to print debug messages */
- extern int default_device; /* Using /dev/tty or equivalent */
- extern char devnam[MAXPATHLEN]; /* Device name */
- +extern int defaultmetric; /* Metric of the default route */
- extern int crtscts; /* Use hardware flow control */
- extern bool modem; /* Use modem control lines */
- extern int inspeed; /* Input/Output speed requested */
- diff -Nru ppp-2.4.5.orig/pppd/sys-linux.c ppp-2.4.5/pppd/sys-linux.c
- --- ppp-2.4.5.orig/pppd/sys-linux.c 2010-08-08 09:53:56.000000000 +0200
- +++ ppp-2.4.5/pppd/sys-linux.c 2010-08-08 10:07:50.000000000 +0200
- @@ -1465,7 +1465,7 @@
- FILE *route_fd = (FILE *) 0;
- static char route_buffer[512];
- static int route_dev_col, route_dest_col, route_gw_col;
- -static int route_flags_col, route_mask_col;
- +static int route_flags_col, route_mask_col, route_metric_col;
- static int route_num_cols;
-
- static int open_route_table (void);
- @@ -1508,6 +1508,7 @@
- route_dest_col = 1;
- route_gw_col = 2;
- route_flags_col = 3;
- + route_metric_col = 6;
- route_mask_col = 7;
- route_num_cols = 8;
-
- @@ -1527,6 +1528,8 @@
- route_gw_col = col;
- else if (strcasecmp(q, "flags") == 0)
- route_flags_col = col;
- + else if (strcasecmp(q, "metric") == 0)
- + route_metric_col = col;
- else if (strcasecmp(q, "mask") == 0)
- route_mask_col = col;
- else
- @@ -1569,6 +1572,7 @@
-
- rt->rt_flags = (short) strtoul(cols[route_flags_col], NULL, 16);
- rt->rt_dev = cols[route_dev_col];
- + rt->rt_metric = (short) strtoul(cols[route_metric_col], NULL, 16);
-
- return 1;
- }
- @@ -1591,6 +1595,8 @@
-
- if (kernel_version > KVERSION(2,1,0) && SIN_ADDR(rt->rt_genmask) != 0)
- continue;
- + if (rt->rt_metric != defaultmetric) /* consider only routes with the same metric */
- + continue;
- if (SIN_ADDR(rt->rt_dst) == 0L) {
- result = 1;
- break;
- @@ -1661,6 +1667,7 @@
- SIN_ADDR(rt.rt_gateway) = gateway;
-
- rt.rt_flags = RTF_UP | RTF_GATEWAY;
- + rt.rt_metric = defaultmetric + 1; /* +1 for binary compatibility */
- if (ioctl(sock_fd, SIOCADDRT, &rt) < 0) {
- if ( ! ok_error ( errno ))
- error("default route ioctl(SIOCADDRT): %m");
- @@ -1696,6 +1703,7 @@
- SIN_ADDR(rt.rt_gateway) = gateway;
-
- rt.rt_flags = RTF_UP | RTF_GATEWAY;
- + rt.rt_metric = defaultmetric + 1; /* +1 for binary compatibility */
- if (ioctl(sock_fd, SIOCDELRT, &rt) < 0 && errno != ESRCH) {
- if (still_ppp()) {
- if ( ! ok_error ( errno ))
|