*/
#ifdef IPX_CHANGE
-#ifndef lint
-static char rcsid[] = "$Id: ipxcp.c,v 1.12 1999/03/16 22:54:39 paulus Exp $";
-#endif
+
+#define RCSID "$Id: ipxcp.c,v 1.18 1999/08/24 05:31:09 paulus Exp $"
/*
* TODO:
#include "pathnames.h"
#include "magic.h"
+static const char rcsid[] = RCSID;
+
/* global vars */
ipxcp_options ipxcp_wantoptions[NUM_PPP]; /* Options that we want to request */
ipxcp_options ipxcp_gotoptions[NUM_PPP]; /* Options that peer ack'd */
"Disable IPXCP (and IPX)" },
{ "-ipx", o_bool, &ipxcp_protent.enabled_flag,
"Disable IPXCP (and IPX)" } ,
- { "ipx-network", o_int, &ipxcp_wantoptions[0].our_network,
+ { "ipx-network", o_uint32, &ipxcp_wantoptions[0].our_network,
"Set our IPX network number", 0, &ipxcp_wantoptions[0].neg_nn },
{ "ipxcp-accept-network", o_bool, &ipxcp_wantoptions[0].accept_network,
"Accept peer IPX network number", 1,
static int ipxcp_is_up;
+static char *ipx_ntoa __P((u_int32_t));
+
/* Used in printing the node number */
#define NODE(base) base[0], base[1], base[2], base[3], base[4], base[5]
{
short int external;
- if (internal & IPX_NONE)
+ if (internal & BIT(IPX_NONE) )
external = IPX_NONE;
else
external = RIP_SAP;
* Make a string representation of a network IP address.
*/
-char *
+static char *
ipx_ntoa(ipxaddr)
u_int32_t ipxaddr;
{
ACKCINETWORK (IPX_NETWORK_NUMBER, go->neg_nn, go->our_network);
ACKCINODE (IPX_NODE_NUMBER, go->neg_node, go->our_node);
ACKCINAME (IPX_ROUTER_NAME, go->neg_name, go->name);
- ACKCIPROTO (IPX_ROUTER_PROTOCOL, go->neg_router, go->router);
- ACKCIPROTO (IPX_ROUTER_PROTOCOL, go->neg_router, go->router);
- ACKCIPROTO (IPX_ROUTER_PROTOCOL, go->neg_router, go->router);
+ if (len > 0)
+ ACKCIPROTO (IPX_ROUTER_PROTOCOL, go->neg_router, go->router);
/*
* This is the end of the record.
*/
p = next;
}
- /* If there is still anything left, this packet is bad. */
- if (len != 0)
- goto bad;
-
/*
* Do not permit the peer to force a router protocol which we do not
* support. However, default to the condition that will accept "NONE".
/*
* OK, the Nak is good. Now we can update state.
+ * If there are any options left, we ignore them.
*/
if (f->state != OPENED)
*go = try;
ipxcp_close(unit, "Interface configuration failed");
return;
}
+ ipxcp_is_up = 1;
/* set the network number for IPX */
if (!sipxfaddr(unit, go->network, go->our_node)) {
return;
}
- ipxcp_is_up = 1;
np_up(f->unit, PPP_IPX);
/*
{
IPXCPDEBUG(("ipxcp: down"));
- if (ipxcp_is_up) {
- ipxcp_is_up = 0;
- np_down(f->unit, PPP_IPX);
- }
- cipxfaddr (f->unit);
+ if (!ipxcp_is_up)
+ return;
+ ipxcp_is_up = 0;
+ np_down(f->unit, PPP_IPX);
+ cipxfaddr(f->unit);
+ sifnpmode(f->unit, PPP_IPX, NPMODE_DROP);
sifdown(f->unit);
ipxcp_script (f, _PATH_IPXDOWN);
}
strproto_lcl[0] = '\0';
if (go->neg_router && ((go->router & BIT(IPX_NONE)) == 0)) {
if (go->router & BIT(RIP_SAP))
- strlcpy (strproto_lcl, sizeof(strproto_lcl), "RIP ");
+ strlcpy (strproto_lcl, "RIP ", sizeof(strproto_lcl));
if (go->router & BIT(NLSP))
- strlcat (strproto_lcl, sizeof(strproto_lcl), "NLSP ");
+ strlcat (strproto_lcl, "NLSP ", sizeof(strproto_lcl));
}
if (strproto_lcl[0] == '\0')
- strlcpy (strproto_lcl, sizeof(strproto_lcl), "NONE ");
+ strlcpy (strproto_lcl, "NONE ", sizeof(strproto_lcl));
strproto_lcl[strlen (strproto_lcl)-1] = '\0';
strproto_rmt[0] = '\0';
if (ho->neg_router && ((ho->router & BIT(IPX_NONE)) == 0)) {
if (ho->router & BIT(RIP_SAP))
- strlcpy (strproto_rmt, sizeof(strproto_rmt), "RIP ");
+ strlcpy (strproto_rmt, "RIP ", sizeof(strproto_rmt));
if (ho->router & BIT(NLSP))
- strlcat (strproto_rmt, sizeof(strproto_rmt), "NLSP ");
+ strlcat (strproto_rmt, "NLSP ", sizeof(strproto_rmt));
}
if (strproto_rmt[0] == '\0')
- strlcpy (strproto_rmt, sizeof(strproto_rmt), "NONE ");
+ strlcpy (strproto_rmt, "NONE ", sizeof(strproto_rmt));
strproto_rmt[strlen (strproto_rmt)-1] = '\0';
- strlcpy (strnetwork, sizeof(strnetwork), ipx_ntoa (go->network));
+ strlcpy (strnetwork, ipx_ntoa (go->network), sizeof(strnetwork));
- slprintf (strlocal, sizeof(strlocal),
- "%02X%02X%02X%02X%02X%02X",
- NODE(go->our_node));
+ slprintf (strlocal, sizeof(strlocal), "%0.6B", go->our_node);
- slprintf (strremote, sizeof(strremote),
- "%02X%02X%02X%02X%02X%02X",
- NODE(ho->his_node));
+ slprintf (strremote, sizeof(strremote), "%0.6B", ho->his_node);
argv[0] = script;
argv[1] = ifname;