diff --git a/usr.sbin/ppp/bundle.c b/usr.sbin/ppp/bundle.c index 990a0c67eec7..49e4c9c1afc9 100644 --- a/usr.sbin/ppp/bundle.c +++ b/usr.sbin/ppp/bundle.c @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: bundle.c,v 1.26 1998/06/27 14:17:23 brian Exp $ + * $Id: bundle.c,v 1.27 1998/06/27 14:18:00 brian Exp $ */ #include @@ -952,7 +952,7 @@ struct rtmsg { int bundle_SetRoute(struct bundle *bundle, int cmd, struct in_addr dst, - struct in_addr gateway, struct in_addr mask, int bang) + struct in_addr gateway, struct in_addr mask, int bang, int ssh) { struct rtmsg rtmes; int s, nb, wb; @@ -1052,12 +1052,13 @@ failed: if (!bang) log_Printf(LogWARN, "Del route failed: %s: Non-existent\n", inet_ntoa(dst)); - } else if (rtmes.m_rtm.rtm_errno == 0) - log_Printf(LogWARN, "%s route failed: %s: errno: %s\n", cmdstr, - inet_ntoa(dst), strerror(errno)); - else + } else if (rtmes.m_rtm.rtm_errno == 0) { + if (!ssh || errno != ENETUNREACH) + log_Printf(LogWARN, "%s route failed: %s: errno: %s\n", cmdstr, + inet_ntoa(dst), strerror(errno)); + } else log_Printf(LogWARN, "%s route failed: %s: %s\n", - cmdstr, inet_ntoa(dst), strerror(rtmes.m_rtm.rtm_errno)); + cmdstr, inet_ntoa(dst), strerror(rtmes.m_rtm.rtm_errno)); } log_Printf(LogDEBUG, "wrote %d: cmd = %s, dst = %x, gateway = %x\n", wb, cmdstr, (unsigned)dst.s_addr, (unsigned)gateway.s_addr); diff --git a/usr.sbin/ppp/bundle.h b/usr.sbin/ppp/bundle.h index a7c8d7091d29..8887f1827fd0 100644 --- a/usr.sbin/ppp/bundle.h +++ b/usr.sbin/ppp/bundle.h @@ -23,7 +23,7 @@ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF * SUCH DAMAGE. * - * $Id: bundle.h,v 1.8 1998/06/16 19:40:25 brian Exp $ + * $Id: bundle.h,v 1.9 1998/06/27 14:17:24 brian Exp $ */ #define PHASE_DEAD 0 /* Link is dead */ @@ -139,7 +139,7 @@ extern const char *bundle_PhaseName(struct bundle *); extern void bundle_NewPhase(struct bundle *, u_int); extern int bundle_LinkIsUp(const struct bundle *); extern int bundle_SetRoute(struct bundle *, int, struct in_addr, - struct in_addr, struct in_addr, int); + struct in_addr, struct in_addr, int, int); extern void bundle_Close(struct bundle *, const char *, int); extern void bundle_Down(struct bundle *, int); extern void bundle_Open(struct bundle *, const char *, int); diff --git a/usr.sbin/ppp/command.c b/usr.sbin/ppp/command.c index ffae13f1e431..69e5365320ea 100644 --- a/usr.sbin/ppp/command.c +++ b/usr.sbin/ppp/command.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: command.c,v 1.154 1998/07/04 22:03:56 brian Exp $ + * $Id: command.c,v 1.155 1998/07/12 00:30:18 brian Exp $ * */ #include @@ -122,7 +122,7 @@ #define NEG_DNS 50 const char Version[] = "2.0"; -const char VersionDate[] = "$Date: 1998/07/04 22:03:56 $"; +const char VersionDate[] = "$Date: 1998/07/12 00:30:18 $"; static int ShowCommand(struct cmdargs const *); static int TerminalCommand(struct cmdargs const *); @@ -1617,7 +1617,7 @@ AddCommand(struct cmdargs const *arg) gateway = GetIpAddr(arg->argv[arg->argn+gw]); if (bundle_SetRoute(arg->bundle, RTM_ADD, dest, gateway, netmask, - arg->cmd->args ? 1 : 0)) + arg->cmd->args ? 1 : 0, (addrs & ROUTE_GWHISADDR) ? 1 : 0)) route_Add(&arg->bundle->ncp.ipcp.route, addrs, dest, netmask, gateway); return 0; @@ -1650,7 +1650,7 @@ DeleteCommand(struct cmdargs const *arg) } none.s_addr = INADDR_ANY; bundle_SetRoute(arg->bundle, RTM_DELETE, dest, none, none, - arg->cmd->args ? 1 : 0); + arg->cmd->args ? 1 : 0, 0); route_Delete(&arg->bundle->ncp.ipcp.route, addrs, dest); } } else diff --git a/usr.sbin/ppp/route.c b/usr.sbin/ppp/route.c index 5dc90618e859..0f7f01934cc7 100644 --- a/usr.sbin/ppp/route.c +++ b/usr.sbin/ppp/route.c @@ -17,7 +17,7 @@ * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE. * - * $Id: route.c,v 1.50 1998/06/27 12:03:49 brian Exp $ + * $Id: route.c,v 1.51 1998/06/27 23:48:53 brian Exp $ * */ @@ -410,7 +410,7 @@ route_IfDelete(struct bundle *bundle, int all) if ((pass == 0 && (rtm->rtm_flags & RTF_WASCLONED)) || (pass == 1 && !(rtm->rtm_flags & RTF_WASCLONED))) { log_Printf(LogDEBUG, "route_IfDelete: Remove it (pass %d)\n", pass); - bundle_SetRoute(bundle, RTM_DELETE, sa_dst, sa_none, sa_none, 0); + bundle_SetRoute(bundle, RTM_DELETE, sa_dst, sa_none, sa_none, 0, 0); } else log_Printf(LogDEBUG, "route_IfDelete: Skip it (pass %d)\n", pass); } else @@ -448,19 +448,19 @@ route_Change(struct bundle *bundle, struct sticky_route *r, for (; r; r = r->next) { if ((r->type & ROUTE_DSTMYADDR) && r->dst.s_addr != me.s_addr) { del.s_addr = r->dst.s_addr & r->mask.s_addr; - bundle_SetRoute(bundle, RTM_DELETE, del, none, none, 1); + bundle_SetRoute(bundle, RTM_DELETE, del, none, none, 1, 0); r->dst = me; if (r->type & ROUTE_GWHISADDR) r->gw = peer; } else if ((r->type & ROUTE_DSTHISADDR) && r->dst.s_addr != peer.s_addr) { del.s_addr = r->dst.s_addr & r->mask.s_addr; - bundle_SetRoute(bundle, RTM_DELETE, del, none, none, 1); + bundle_SetRoute(bundle, RTM_DELETE, del, none, none, 1, 0); r->dst = peer; if (r->type & ROUTE_GWHISADDR) r->gw = peer; } else if ((r->type & ROUTE_GWHISADDR) && r->gw.s_addr != peer.s_addr) r->gw = peer; - bundle_SetRoute(bundle, RTM_ADD, r->dst, r->gw, r->mask, 1); + bundle_SetRoute(bundle, RTM_ADD, r->dst, r->gw, r->mask, 1, 0); } } @@ -472,7 +472,7 @@ route_Clean(struct bundle *bundle, struct sticky_route *r) none.s_addr = INADDR_ANY; for (; r; r = r->next) { del.s_addr = r->dst.s_addr & r->mask.s_addr; - bundle_SetRoute(bundle, RTM_DELETE, del, none, none, 1); + bundle_SetRoute(bundle, RTM_DELETE, del, none, none, 1, 0); } }