for robert's final zeroconf code.
sbindir='${exec_prefix}/usr/sbin'
includedir='${prefix}/usr/include'
+rootsbindir='${exec_prefix}/sbin'
+AC_SUBST(rootsbindir)
+
# Directories for documentation and demos.
docdir='${prefix}/usr/share/doc/$(PACKAGE)'
AC_SUBST(docdir)
AC_OUTPUT([Makefile Kernelenv libcfs/Makefile portals/Makefile \
unals/Makefile knals/Makefile router/Makefile \
knals/socknal/Makefile knals/gmnal/Makefile knals/qswnal/Makefile \
- knals/scimacnal/Makefile knals/toenal/Makefile \
+ knals/scimacnal/Makefile knals/toenal/Makefile knals/ibnal/Makefile\
utils/Makefile tests/Makefile doc/Makefile ])
__u32 pcfg_nal;
__u32 pcfg_flags;
+ __u32 pcfg_gw_nal;
__u64 pcfg_nid;
__u64 pcfg_nid2;
__u64 pcfg_nid3;
#define OBD_DEV_PATH "/dev/obd"
int ptl_name2nal(char *str);
+int ptl_parse_ipaddr (__u32 *ipaddrp, char *str);
int ptl_parse_nid (ptl_nid_t *nidp, char *str);
char * ptl_nid2str (char *buffer, ptl_nid_t nid);
#define OBD_DEV_PATH "/dev/obd"
int ptl_name2nal(char *str);
+int ptl_parse_ipaddr (__u32 *ipaddrp, char *str);
int ptl_parse_nid (ptl_nid_t *nidp, char *str);
char * ptl_nid2str (char *buffer, ptl_nid_t nid);
#define SOCKNAL_PEER_HASH_SIZE 101 /* # peer lists */
-#if PTL_LARGE_MTU
-# define SOCKNAL_MAX_FWD_PAYLOAD (256<<10) /* biggest payload I can forward */
-#else
-# define SOCKNAL_MAX_FWD_PAYLOAD (64<<10) /* biggest payload I can forward */
-#endif
-
#define SOCKNAL_NLTXS 128 /* # normal transmit messages */
#define SOCKNAL_NNBLK_LTXS 128 /* # transmit messages reserved if can't block */
#define SOCKNAL_SMALL_FWD_PAGES 1 /* # pages in a small message fwd buffer */
-#define SOCKNAL_LARGE_FWD_PAGES (PAGE_ALIGN (sizeof (ptl_hdr_t) + SOCKNAL_MAX_FWD_PAYLOAD) >> PAGE_SHIFT)
+#define SOCKNAL_LARGE_FWD_PAGES (PAGE_ALIGN (sizeof (ptl_hdr_t) + PTL_MTU) >> PAGE_SHIFT)
/* # pages in a large message fwd buffer */
#define SOCKNAL_RESCHED 100 /* # scheduler loops before reschedule */
{
ksock_peer_t *peer;
ptl_nid_t dest_nid = NTOH__u64 (conn->ksnc_hdr.dest_nid);
+ ptl_nid_t src_nid = NTOH__u64 (conn->ksnc_hdr.src_nid);
int body_len = NTOH__u32 (conn->ksnc_hdr.payload_length);
+ char str[PTL_NALFMT_SIZE];
CDEBUG (D_NET, "%p "LPX64"->"LPX64" %d parsing header\n", conn,
- NTOH__u64 (conn->ksnc_hdr.src_nid),
- dest_nid, conn->ksnc_rx_nob_left);
+ src_nid, dest_nid, conn->ksnc_rx_nob_left);
LASSERT (conn->ksnc_rx_state == SOCKNAL_RX_HEADER);
LASSERT (conn->ksnc_rx_scheduled);
if (body_len < 0) { /* length corrupt (overflow) */
- CERROR("dropping packet from "LPX64" for "LPX64": packet "
- "size %d illegal\n", NTOH__u64 (conn->ksnc_hdr.src_nid),
- dest_nid, body_len);
+ CERROR("dropping packet from "LPX64" (%s) for "LPX64" (%s): "
+ "packet size %d illegal\n",
+ src_nid, portals_nid2str(TCPNAL, src_nid, str),
+ dest_nid, portals_nid2str(TCPNAL, dest_nid, str),
+ body_len);
ksocknal_new_packet (conn, 0); /* on to new packet */
return;
}
if (ksocknal_data.ksnd_fmbs == NULL) { /* not forwarding */
- CERROR("dropping packet from "LPX64" for "LPX64": not "
- "forwarding\n", conn->ksnc_hdr.src_nid,
- conn->ksnc_hdr.dest_nid);
+ CERROR("dropping packet from "LPX64" (%s) for "LPX64
+ " (%s): not forwarding\n",
+ src_nid, portals_nid2str(TCPNAL, src_nid, str),
+ dest_nid, portals_nid2str(TCPNAL, dest_nid, str));
/* on to new packet (skip this one's body) */
ksocknal_new_packet (conn, body_len);
return;
}
- if (body_len > SOCKNAL_MAX_FWD_PAYLOAD) { /* too big to forward */
- CERROR ("dropping packet from "LPX64" for "LPX64
- ": packet size %d too big\n", conn->ksnc_hdr.src_nid,
- conn->ksnc_hdr.dest_nid, body_len);
+ if (body_len > PTL_MTU) { /* too big to forward */
+ CERROR ("dropping packet from "LPX64" (%s) for "LPX64
+ "(%s): packet size %d too big\n",
+ src_nid, portals_nid2str(TCPNAL, src_nid, str),
+ dest_nid, portals_nid2str(TCPNAL, dest_nid, str),
+ body_len);
/* on to new packet (skip this one's body) */
ksocknal_new_packet (conn, body_len);
return;
/* should have gone direct */
peer = ksocknal_get_peer (conn->ksnc_hdr.dest_nid);
if (peer != NULL) {
- CERROR ("dropping packet from "LPX64" for "LPX64
- ": target is a peer\n", conn->ksnc_hdr.src_nid,
- conn->ksnc_hdr.dest_nid);
+ CERROR ("dropping packet from "LPX64" (%s) for "LPX64
+ "(%s): target is a peer\n",
+ src_nid, portals_nid2str(TCPNAL, src_nid, str),
+ dest_nid, portals_nid2str(TCPNAL, dest_nid, str));
ksocknal_put_peer (peer); /* drop ref from get above */
/* on to next packet (skip this one's body) */
#include <portals/p30.h>
#include <portals/lib-p30.h>
-#define SOCKNAL_MAX_FWD_PAYLOAD (64<<10) /* biggest payload I can forward */
-
#define SOCKNAL_NLTXS 128 /* # normal transmit messages */
#define SOCKNAL_NNBLK_LTXS 128 /* # transmit messages reserved if can't block */
#define SOCKNAL_SMALL_FWD_PAGES 1 /* # pages in a small message fwd buffer */
-#define SOCKNAL_LARGE_FWD_PAGES (PAGE_ALIGN (sizeof (ptl_hdr_t) + SOCKNAL_MAX_FWD_PAYLOAD) >> PAGE_SHIFT)
+#define SOCKNAL_LARGE_FWD_PAGES (PAGE_ALIGN (sizeof (ptl_hdr_t) + PTL_MTU) >> PAGE_SHIFT)
/* # pages in a large message fwd buffer */
#define SOCKNAL_RESCHED 100 /* # scheduler loops before reschedule */
return;
}
- if (body_len > SOCKNAL_MAX_FWD_PAYLOAD) /* too big to forward */
+ if (body_len > PTL_MTU) /* too big to forward */
{
CERROR ("dropping packet from "LPX64" for "LPX64": packet size %d too big\n",
conn->ksnc_hdr.src_nid, conn->ksnc_hdr.dest_nid, body_len);
CDEBUG(D_IOCTL, "Adding route: [%d] "LPU64" : "LPU64" - "LPU64"\n",
pcfg->pcfg_nal, pcfg->pcfg_nid,
pcfg->pcfg_nid2, pcfg->pcfg_nid3);
- err = kportal_add_route(pcfg->pcfg_nal, pcfg->pcfg_nid,
+ err = kportal_add_route(pcfg->pcfg_gw_nal, pcfg->pcfg_nid,
pcfg->pcfg_nid2, pcfg->pcfg_nid3);
break;
case NAL_CMD_DEL_ROUTE:
CDEBUG (D_IOCTL, "Removing routes via [%d] "LPU64" : "LPU64" - "LPU64"\n",
- pcfg->pcfg_nal, pcfg->pcfg_nid,
+ pcfg->pcfg_gw_nal, pcfg->pcfg_nid,
pcfg->pcfg_nid2, pcfg->pcfg_nid3);
err = kportal_del_route (pcfg->pcfg_nal, pcfg->pcfg_nid,
pcfg->pcfg_nid2, pcfg->pcfg_nid3);
case NAL_CMD_NOTIFY_ROUTER: {
CDEBUG (D_IOCTL, "Notifying peer [%d] "LPU64" %s @ %ld\n",
- pcfg->pcfg_nal, pcfg->pcfg_nid,
+ pcfg->pcfg_gw_nal, pcfg->pcfg_nid,
pcfg->pcfg_flags ? "Enabling" : "Disabling",
(time_t)pcfg->pcfg_nid3);
case NAL_CMD_GET_ROUTE:
CDEBUG (D_IOCTL, "Getting route [%d]\n", pcfg->pcfg_count);
- err = kportal_get_route(pcfg->pcfg_count, &pcfg->pcfg_nal,
+ err = kportal_get_route(pcfg->pcfg_count, &pcfg->pcfg_gw_nal,
&pcfg->pcfg_nid,
&pcfg->pcfg_nid2, &pcfg->pcfg_nid3,
&pcfg->pcfg_flags);
RETURN(err);
}
-static int
-kportal_register_router (void)
-{
- int rc;
- kpr_control_interface_t *ci;
-
- ci = (kpr_control_interface_t *)PORTAL_SYMBOL_GET(kpr_control_interface);
- if (ci == NULL)
- return (0);
-
- rc = kportal_nal_register(ROUTER, kportal_router_cmd, NULL);
-
- PORTAL_SYMBOL_PUT(kpr_control_interface);
- return (rc);
-}
-
-static int
-kportal_unregister_router (void)
-{
- int rc;
- kpr_control_interface_t *ci;
-
- ci = (kpr_control_interface_t *)PORTAL_SYMBOL_GET(kpr_control_interface);
- if (ci == NULL)
- return (0);
-
- rc = kportal_nal_unregister(ROUTER);
-
- PORTAL_SYMBOL_PUT(kpr_control_interface);
- return (rc);
-}
-
int
kportal_nal_cmd(struct portals_cfg *pcfg)
{
goto cleanup_fini;
}
- rc = kportal_register_router();
+ rc = kportal_nal_register(ROUTER, kportal_router_cmd, NULL);
if (rc) {
- CERROR("kportals_register_router: error %d\n", rc);
+ CERROR("kportal_nal_registre: ROUTER error %d\n", rc);
goto cleanup_proc;
}
{
int rc;
- kportal_unregister_router();
+ kportal_nal_unregister(ROUTER);
remove_proc();
PtlFini();
{
int rc;
- pcfg->pcfg_nal = g_nal;
+ if (pcfg->pcfg_nal ==0)
+ pcfg->pcfg_nal = g_nal;
if (g_record_cb) {
rc = g_record_cb(PORTALS_CFG_TYPE, sizeof(*pcfg), pcfg);
PCFG_INIT(pcfg, NAL_CMD_ADD_ROUTE);
pcfg.pcfg_nid = gateway_nid;
- pcfg.pcfg_nal = g_nal;
+ pcfg.pcfg_nal = ROUTER;
+ pcfg.pcfg_gw_nal = g_nal;
pcfg.pcfg_nid2 = MIN (nid1, nid2);
pcfg.pcfg_nid3 = MAX (nid1, nid2);
rc = pcfg_ioctl(&pcfg);
if (rc != 0)
{
- fprintf (stderr, "IOC_PORTAL_ADD_ROUTE failed: %s\n", strerror (errno));
+ fprintf (stderr, "NAL_CMD_ADD_ROUTE failed: %s\n", strerror (errno));
return (-1);
}
}
PCFG_INIT(pcfg, NAL_CMD_DEL_ROUTE);
- pcfg.pcfg_nal = g_nal;
+ pcfg.pcfg_nal = ROUTER;
+ pcfg.pcfg_gw_nal = g_nal;
pcfg.pcfg_nid = nid;
pcfg.pcfg_nid2 = nid1;
pcfg.pcfg_nid3 = nid2;
rc = pcfg_ioctl(&pcfg);
if (rc != 0)
{
- fprintf (stderr, "IOC_PORTAL_DEL_ROUTE ("LPX64") failed: %s\n", nid, strerror (errno));
+ fprintf (stderr, "NAL_CMD_DEL_ROUTE ("LPX64") failed: %s\n", nid, strerror (errno));
return (-1);
}
}
PCFG_INIT(pcfg, NAL_CMD_NOTIFY_ROUTER);
- pcfg.pcfg_nal = g_nal;
+ pcfg.pcfg_nal = ROUTER;
+ pcfg.pcfg_gw_nal = g_nal;
pcfg.pcfg_nid = nid;
pcfg.pcfg_flags = enable;
/* Yeuch; 'cept I need a __u64 on 64 bit machines... */
rc = pcfg_ioctl(&pcfg);
if (rc != 0)
{
- fprintf (stderr, "IOC_PORTAL_NOTIFY_ROUTER ("LPX64") failed: %s\n",
+ fprintf (stderr, "NAL_CMD_NOTIFY_ROUTER ("LPX64") failed: %s\n",
nid, strerror (errno));
return (-1);
}
for (index = 0;;index++)
{
PCFG_INIT(pcfg, NAL_CMD_GET_ROUTE);
+ pcfg.pcfg_nal = ROUTER;
pcfg.pcfg_count = index;
rc = pcfg_ioctl(&pcfg);
if (rc != 0)
break;
- gateway_nal = pcfg.pcfg_nal;
+ gateway_nal = pcfg.pcfg_gw_nal;
gateway_nid = pcfg.pcfg_nid;
nid1 = pcfg.pcfg_nid2;
nid2 = pcfg.pcfg_nid3;
sbindir='${exec_prefix}/usr/sbin'
includedir='${prefix}/usr/include'
+rootsbindir='${exec_prefix}/sbin'
+AC_SUBST(rootsbindir)
+
# Directories for documentation and demos.
docdir='${prefix}/usr/share/doc/$(PACKAGE)'
AC_SUBST(docdir)
AC_OUTPUT([Makefile Kernelenv libcfs/Makefile portals/Makefile \
unals/Makefile knals/Makefile router/Makefile \
knals/socknal/Makefile knals/gmnal/Makefile knals/qswnal/Makefile \
- knals/scimacnal/Makefile knals/toenal/Makefile \
+ knals/scimacnal/Makefile knals/toenal/Makefile knals/ibnal/Makefile\
utils/Makefile tests/Makefile doc/Makefile ])
__u32 pcfg_nal;
__u32 pcfg_flags;
+ __u32 pcfg_gw_nal;
__u64 pcfg_nid;
__u64 pcfg_nid2;
__u64 pcfg_nid3;
#define OBD_DEV_PATH "/dev/obd"
int ptl_name2nal(char *str);
+int ptl_parse_ipaddr (__u32 *ipaddrp, char *str);
int ptl_parse_nid (ptl_nid_t *nidp, char *str);
char * ptl_nid2str (char *buffer, ptl_nid_t nid);
#define SOCKNAL_PEER_HASH_SIZE 101 /* # peer lists */
-#if PTL_LARGE_MTU
-# define SOCKNAL_MAX_FWD_PAYLOAD (256<<10) /* biggest payload I can forward */
-#else
-# define SOCKNAL_MAX_FWD_PAYLOAD (64<<10) /* biggest payload I can forward */
-#endif
-
#define SOCKNAL_NLTXS 128 /* # normal transmit messages */
#define SOCKNAL_NNBLK_LTXS 128 /* # transmit messages reserved if can't block */
#define SOCKNAL_SMALL_FWD_PAGES 1 /* # pages in a small message fwd buffer */
-#define SOCKNAL_LARGE_FWD_PAGES (PAGE_ALIGN (sizeof (ptl_hdr_t) + SOCKNAL_MAX_FWD_PAYLOAD) >> PAGE_SHIFT)
+#define SOCKNAL_LARGE_FWD_PAGES (PAGE_ALIGN (sizeof (ptl_hdr_t) + PTL_MTU) >> PAGE_SHIFT)
/* # pages in a large message fwd buffer */
#define SOCKNAL_RESCHED 100 /* # scheduler loops before reschedule */
{
ksock_peer_t *peer;
ptl_nid_t dest_nid = NTOH__u64 (conn->ksnc_hdr.dest_nid);
+ ptl_nid_t src_nid = NTOH__u64 (conn->ksnc_hdr.src_nid);
int body_len = NTOH__u32 (conn->ksnc_hdr.payload_length);
+ char str[PTL_NALFMT_SIZE];
CDEBUG (D_NET, "%p "LPX64"->"LPX64" %d parsing header\n", conn,
- NTOH__u64 (conn->ksnc_hdr.src_nid),
- dest_nid, conn->ksnc_rx_nob_left);
+ src_nid, dest_nid, conn->ksnc_rx_nob_left);
LASSERT (conn->ksnc_rx_state == SOCKNAL_RX_HEADER);
LASSERT (conn->ksnc_rx_scheduled);
if (body_len < 0) { /* length corrupt (overflow) */
- CERROR("dropping packet from "LPX64" for "LPX64": packet "
- "size %d illegal\n", NTOH__u64 (conn->ksnc_hdr.src_nid),
- dest_nid, body_len);
+ CERROR("dropping packet from "LPX64" (%s) for "LPX64" (%s): "
+ "packet size %d illegal\n",
+ src_nid, portals_nid2str(TCPNAL, src_nid, str),
+ dest_nid, portals_nid2str(TCPNAL, dest_nid, str),
+ body_len);
ksocknal_new_packet (conn, 0); /* on to new packet */
return;
}
if (ksocknal_data.ksnd_fmbs == NULL) { /* not forwarding */
- CERROR("dropping packet from "LPX64" for "LPX64": not "
- "forwarding\n", conn->ksnc_hdr.src_nid,
- conn->ksnc_hdr.dest_nid);
+ CERROR("dropping packet from "LPX64" (%s) for "LPX64
+ " (%s): not forwarding\n",
+ src_nid, portals_nid2str(TCPNAL, src_nid, str),
+ dest_nid, portals_nid2str(TCPNAL, dest_nid, str));
/* on to new packet (skip this one's body) */
ksocknal_new_packet (conn, body_len);
return;
}
- if (body_len > SOCKNAL_MAX_FWD_PAYLOAD) { /* too big to forward */
- CERROR ("dropping packet from "LPX64" for "LPX64
- ": packet size %d too big\n", conn->ksnc_hdr.src_nid,
- conn->ksnc_hdr.dest_nid, body_len);
+ if (body_len > PTL_MTU) { /* too big to forward */
+ CERROR ("dropping packet from "LPX64" (%s) for "LPX64
+ "(%s): packet size %d too big\n",
+ src_nid, portals_nid2str(TCPNAL, src_nid, str),
+ dest_nid, portals_nid2str(TCPNAL, dest_nid, str),
+ body_len);
/* on to new packet (skip this one's body) */
ksocknal_new_packet (conn, body_len);
return;
/* should have gone direct */
peer = ksocknal_get_peer (conn->ksnc_hdr.dest_nid);
if (peer != NULL) {
- CERROR ("dropping packet from "LPX64" for "LPX64
- ": target is a peer\n", conn->ksnc_hdr.src_nid,
- conn->ksnc_hdr.dest_nid);
+ CERROR ("dropping packet from "LPX64" (%s) for "LPX64
+ "(%s): target is a peer\n",
+ src_nid, portals_nid2str(TCPNAL, src_nid, str),
+ dest_nid, portals_nid2str(TCPNAL, dest_nid, str));
ksocknal_put_peer (peer); /* drop ref from get above */
/* on to next packet (skip this one's body) */
#include <portals/p30.h>
#include <portals/lib-p30.h>
-#define SOCKNAL_MAX_FWD_PAYLOAD (64<<10) /* biggest payload I can forward */
-
#define SOCKNAL_NLTXS 128 /* # normal transmit messages */
#define SOCKNAL_NNBLK_LTXS 128 /* # transmit messages reserved if can't block */
#define SOCKNAL_SMALL_FWD_PAGES 1 /* # pages in a small message fwd buffer */
-#define SOCKNAL_LARGE_FWD_PAGES (PAGE_ALIGN (sizeof (ptl_hdr_t) + SOCKNAL_MAX_FWD_PAYLOAD) >> PAGE_SHIFT)
+#define SOCKNAL_LARGE_FWD_PAGES (PAGE_ALIGN (sizeof (ptl_hdr_t) + PTL_MTU) >> PAGE_SHIFT)
/* # pages in a large message fwd buffer */
#define SOCKNAL_RESCHED 100 /* # scheduler loops before reschedule */
return;
}
- if (body_len > SOCKNAL_MAX_FWD_PAYLOAD) /* too big to forward */
+ if (body_len > PTL_MTU) /* too big to forward */
{
CERROR ("dropping packet from "LPX64" for "LPX64": packet size %d too big\n",
conn->ksnc_hdr.src_nid, conn->ksnc_hdr.dest_nid, body_len);
CDEBUG(D_IOCTL, "Adding route: [%d] "LPU64" : "LPU64" - "LPU64"\n",
pcfg->pcfg_nal, pcfg->pcfg_nid,
pcfg->pcfg_nid2, pcfg->pcfg_nid3);
- err = kportal_add_route(pcfg->pcfg_nal, pcfg->pcfg_nid,
+ err = kportal_add_route(pcfg->pcfg_gw_nal, pcfg->pcfg_nid,
pcfg->pcfg_nid2, pcfg->pcfg_nid3);
break;
case NAL_CMD_DEL_ROUTE:
CDEBUG (D_IOCTL, "Removing routes via [%d] "LPU64" : "LPU64" - "LPU64"\n",
- pcfg->pcfg_nal, pcfg->pcfg_nid,
+ pcfg->pcfg_gw_nal, pcfg->pcfg_nid,
pcfg->pcfg_nid2, pcfg->pcfg_nid3);
err = kportal_del_route (pcfg->pcfg_nal, pcfg->pcfg_nid,
pcfg->pcfg_nid2, pcfg->pcfg_nid3);
case NAL_CMD_NOTIFY_ROUTER: {
CDEBUG (D_IOCTL, "Notifying peer [%d] "LPU64" %s @ %ld\n",
- pcfg->pcfg_nal, pcfg->pcfg_nid,
+ pcfg->pcfg_gw_nal, pcfg->pcfg_nid,
pcfg->pcfg_flags ? "Enabling" : "Disabling",
(time_t)pcfg->pcfg_nid3);
case NAL_CMD_GET_ROUTE:
CDEBUG (D_IOCTL, "Getting route [%d]\n", pcfg->pcfg_count);
- err = kportal_get_route(pcfg->pcfg_count, &pcfg->pcfg_nal,
+ err = kportal_get_route(pcfg->pcfg_count, &pcfg->pcfg_gw_nal,
&pcfg->pcfg_nid,
&pcfg->pcfg_nid2, &pcfg->pcfg_nid3,
&pcfg->pcfg_flags);
RETURN(err);
}
-static int
-kportal_register_router (void)
-{
- int rc;
- kpr_control_interface_t *ci;
-
- ci = (kpr_control_interface_t *)PORTAL_SYMBOL_GET(kpr_control_interface);
- if (ci == NULL)
- return (0);
-
- rc = kportal_nal_register(ROUTER, kportal_router_cmd, NULL);
-
- PORTAL_SYMBOL_PUT(kpr_control_interface);
- return (rc);
-}
-
-static int
-kportal_unregister_router (void)
-{
- int rc;
- kpr_control_interface_t *ci;
-
- ci = (kpr_control_interface_t *)PORTAL_SYMBOL_GET(kpr_control_interface);
- if (ci == NULL)
- return (0);
-
- rc = kportal_nal_unregister(ROUTER);
-
- PORTAL_SYMBOL_PUT(kpr_control_interface);
- return (rc);
-}
-
int
kportal_nal_cmd(struct portals_cfg *pcfg)
{
goto cleanup_fini;
}
- rc = kportal_register_router();
+ rc = kportal_nal_register(ROUTER, kportal_router_cmd, NULL);
if (rc) {
- CERROR("kportals_register_router: error %d\n", rc);
+ CERROR("kportal_nal_registre: ROUTER error %d\n", rc);
goto cleanup_proc;
}
{
int rc;
- kportal_unregister_router();
+ kportal_nal_unregister(ROUTER);
remove_proc();
PtlFini();
{
int rc;
- pcfg->pcfg_nal = g_nal;
+ if (pcfg->pcfg_nal ==0)
+ pcfg->pcfg_nal = g_nal;
if (g_record_cb) {
rc = g_record_cb(PORTALS_CFG_TYPE, sizeof(*pcfg), pcfg);
PCFG_INIT(pcfg, NAL_CMD_ADD_ROUTE);
pcfg.pcfg_nid = gateway_nid;
- pcfg.pcfg_nal = g_nal;
+ pcfg.pcfg_nal = ROUTER;
+ pcfg.pcfg_gw_nal = g_nal;
pcfg.pcfg_nid2 = MIN (nid1, nid2);
pcfg.pcfg_nid3 = MAX (nid1, nid2);
rc = pcfg_ioctl(&pcfg);
if (rc != 0)
{
- fprintf (stderr, "IOC_PORTAL_ADD_ROUTE failed: %s\n", strerror (errno));
+ fprintf (stderr, "NAL_CMD_ADD_ROUTE failed: %s\n", strerror (errno));
return (-1);
}
}
PCFG_INIT(pcfg, NAL_CMD_DEL_ROUTE);
- pcfg.pcfg_nal = g_nal;
+ pcfg.pcfg_nal = ROUTER;
+ pcfg.pcfg_gw_nal = g_nal;
pcfg.pcfg_nid = nid;
pcfg.pcfg_nid2 = nid1;
pcfg.pcfg_nid3 = nid2;
rc = pcfg_ioctl(&pcfg);
if (rc != 0)
{
- fprintf (stderr, "IOC_PORTAL_DEL_ROUTE ("LPX64") failed: %s\n", nid, strerror (errno));
+ fprintf (stderr, "NAL_CMD_DEL_ROUTE ("LPX64") failed: %s\n", nid, strerror (errno));
return (-1);
}
}
PCFG_INIT(pcfg, NAL_CMD_NOTIFY_ROUTER);
- pcfg.pcfg_nal = g_nal;
+ pcfg.pcfg_nal = ROUTER;
+ pcfg.pcfg_gw_nal = g_nal;
pcfg.pcfg_nid = nid;
pcfg.pcfg_flags = enable;
/* Yeuch; 'cept I need a __u64 on 64 bit machines... */
rc = pcfg_ioctl(&pcfg);
if (rc != 0)
{
- fprintf (stderr, "IOC_PORTAL_NOTIFY_ROUTER ("LPX64") failed: %s\n",
+ fprintf (stderr, "NAL_CMD_NOTIFY_ROUTER ("LPX64") failed: %s\n",
nid, strerror (errno));
return (-1);
}
for (index = 0;;index++)
{
PCFG_INIT(pcfg, NAL_CMD_GET_ROUTE);
+ pcfg.pcfg_nal = ROUTER;
pcfg.pcfg_count = index;
rc = pcfg_ioctl(&pcfg);
if (rc != 0)
break;
- gateway_nal = pcfg.pcfg_nal;
+ gateway_nal = pcfg.pcfg_gw_nal;
gateway_nid = pcfg.pcfg_nid;
nid1 = pcfg.pcfg_nid2;
nid2 = pcfg.pcfg_nid3;
--- /dev/null
+#!/usr/bin/perl -w
+use Socket;
+use strict;
+my ($rendezvous, $line);
+
+$rendezvous = shift || <@ARGV>;
+socket(SOCK, AF_UNIX, SOCK_STREAM, 0) || die "socket: $!";
+connect(SOCK, sockaddr_un($rendezvous)) || die "connect: $!";
+while (defined($line = <SOCK>)) {
+ print $line;
+}
+exit;
--- /dev/null
+#! /usr/bin/perl -w
+use strict;
+use Socket;
+
+BEGIN { $ENV{PATH} = '/usr/ucb:/bin' }
+sub logmsg { print "$0 $$: @_ at ", scalar localtime, "\n" }
+
+my $NAME = <@ARGV>;
+my $uaddr = sockaddr_un($NAME);
+
+socket(Server,AF_UNIX,SOCK_STREAM,0) || die "socket: $!";
+unlink($NAME);
+bind (Server, $uaddr) || die "bind: $!";
+listen(Server,SOMAXCONN) || die "listen: $!";
+
+logmsg "server started on $NAME";
+
+accept(Client,Server);
+logmsg "connection on $NAME";
+print Client "from server\n";
+close Client;