Silence ``Network unreachable'' warnings when using
``add .... HISADDR''. The network will never be reachable at this point unless we're in -auto or reading the command from ppp.linkup. We can now run the following lines and get the expected results: set ifaddr 1.2.3.4/0 5.6.7.8/0 add default HISADDR where a route is added immediately in auto mode and the whole thing is delayed 'till the IP numbers have been agreed in other modes. Essentially, ppp.linkup is no longer required.
This commit is contained in:
parent
93280d730e
commit
2062443fd7
@ -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 <sys/param.h>
|
||||
@ -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);
|
||||
|
@ -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);
|
||||
|
@ -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 <sys/types.h>
|
||||
@ -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
|
||||
|
@ -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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user