Whamcloud - gitweb
merge b_devel to b_eq: 20031112
authorericm <ericm>
Wed, 12 Nov 2003 11:03:26 +0000 (11:03 +0000)
committerericm <ericm>
Wed, 12 Nov 2003 11:03:26 +0000 (11:03 +0000)
for robert's final zeroconf code.

23 files changed:
lnet/build.m4
lnet/configure.in
lnet/include/linux/kp30.h
lnet/include/lnet/lnetctl.h
lnet/include/lnet/ptlctl.h
lnet/klnds/socklnd/socklnd.h
lnet/klnds/socklnd/socklnd_cb.c
lnet/klnds/toelnd/toenal.h
lnet/klnds/toelnd/toenal_cb.c
lnet/libcfs/module.c
lnet/utils/portals.c
lustre/portals/build.m4
lustre/portals/configure.in
lustre/portals/include/linux/kp30.h
lustre/portals/include/portals/ptlctl.h
lustre/portals/knals/socknal/socknal.h
lustre/portals/knals/socknal/socknal_cb.c
lustre/portals/knals/toenal/toenal.h
lustre/portals/knals/toenal/toenal_cb.c
lustre/portals/libcfs/module.c
lustre/portals/utils/portals.c
lustre/tests/socketclient [new file with mode: 0755]
lustre/tests/socketserver [new file with mode: 0755]

index 025f243..8c55b20 100644 (file)
@@ -16,6 +16,9 @@ bindir='${exec_prefix}/usr/bin'
 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)
index 31d3492..44657e0 100644 (file)
@@ -29,6 +29,6 @@ AM_CONFIG_HEADER(include/config.h)
 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 ])
 
index 344cf28..0acec81 100644 (file)
@@ -778,6 +778,7 @@ struct portals_cfg {
         __u32 pcfg_nal;
         __u32 pcfg_flags;
 
+        __u32 pcfg_gw_nal;
         __u64 pcfg_nid;
         __u64 pcfg_nid2;
         __u64 pcfg_nid3;
index 0466494..a9942aa 100644 (file)
@@ -29,6 +29,7 @@
 #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);
 
index 0466494..a9942aa 100644 (file)
@@ -29,6 +29,7 @@
 #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);
 
index 8c906e2..227a24f 100644 (file)
 
 #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 */
 
@@ -96,7 +90,7 @@
 
 #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 */
index 346d60e..6cd4e73 100644 (file)
@@ -1406,37 +1406,43 @@ ksocknal_fwd_parse (ksock_conn_t *conn)
 {
         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;
@@ -1445,9 +1451,10 @@ ksocknal_fwd_parse (ksock_conn_t *conn)
         /* 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) */
index 3654848..b211d6c 100644 (file)
@@ -60,8 +60,6 @@
 #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 */
 
@@ -70,7 +68,7 @@
 
 #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 */
index 37e3f1e..f7fa794 100644 (file)
@@ -718,7 +718,7 @@ ktoenal_fwd_parse (ksock_conn_t *conn)
                 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);
index 930920b..a01dfe2 100644 (file)
@@ -225,13 +225,13 @@ kportal_router_cmd(struct portals_cfg *pcfg, void * private)
                 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);
@@ -239,7 +239,7 @@ kportal_router_cmd(struct portals_cfg *pcfg, void * private)
 
         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);
                 
@@ -251,7 +251,7 @@ kportal_router_cmd(struct portals_cfg *pcfg, void * private)
                 
         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);
@@ -260,38 +260,6 @@ kportal_router_cmd(struct portals_cfg *pcfg, void * private)
         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)
 {
@@ -626,9 +594,9 @@ static int init_kportals_module(void)
                 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;
         }
 
@@ -654,7 +622,7 @@ static void exit_kportals_module(void)
 {
         int rc;
 
-        kportal_unregister_router();
+        kportal_nal_unregister(ROUTER);
         remove_proc();
         PtlFini();
 
index 91e817d..f191664 100644 (file)
@@ -100,7 +100,8 @@ pcfg_ioctl(struct portals_cfg *pcfg)
 {
         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);
@@ -1188,14 +1189,15 @@ jt_ptl_add_route (int argc, char **argv)
 
         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);
         }
         
@@ -1250,7 +1252,8 @@ jt_ptl_del_route (int argc, char **argv)
         }
         
         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;
@@ -1258,7 +1261,7 @@ jt_ptl_del_route (int argc, char **argv)
         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);
         }
         
@@ -1309,7 +1312,8 @@ jt_ptl_notify_router (int argc, char **argv)
         }
 
         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... */
@@ -1318,7 +1322,7 @@ jt_ptl_notify_router (int argc, char **argv)
         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);
         }
@@ -1342,13 +1346,14 @@ jt_ptl_print_routes (int argc, char **argv)
         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;
index 025f243..8c55b20 100644 (file)
@@ -16,6 +16,9 @@ bindir='${exec_prefix}/usr/bin'
 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)
index 31d3492..44657e0 100644 (file)
@@ -29,6 +29,6 @@ AM_CONFIG_HEADER(include/config.h)
 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 ])
 
index 344cf28..0acec81 100644 (file)
@@ -778,6 +778,7 @@ struct portals_cfg {
         __u32 pcfg_nal;
         __u32 pcfg_flags;
 
+        __u32 pcfg_gw_nal;
         __u64 pcfg_nid;
         __u64 pcfg_nid2;
         __u64 pcfg_nid3;
index 0466494..a9942aa 100644 (file)
@@ -29,6 +29,7 @@
 #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);
 
index 8c906e2..227a24f 100644 (file)
 
 #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 */
 
@@ -96,7 +90,7 @@
 
 #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 */
index 346d60e..6cd4e73 100644 (file)
@@ -1406,37 +1406,43 @@ ksocknal_fwd_parse (ksock_conn_t *conn)
 {
         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;
@@ -1445,9 +1451,10 @@ ksocknal_fwd_parse (ksock_conn_t *conn)
         /* 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) */
index 3654848..b211d6c 100644 (file)
@@ -60,8 +60,6 @@
 #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 */
 
@@ -70,7 +68,7 @@
 
 #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 */
index 37e3f1e..f7fa794 100644 (file)
@@ -718,7 +718,7 @@ ktoenal_fwd_parse (ksock_conn_t *conn)
                 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);
index 930920b..a01dfe2 100644 (file)
@@ -225,13 +225,13 @@ kportal_router_cmd(struct portals_cfg *pcfg, void * private)
                 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);
@@ -239,7 +239,7 @@ kportal_router_cmd(struct portals_cfg *pcfg, void * private)
 
         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);
                 
@@ -251,7 +251,7 @@ kportal_router_cmd(struct portals_cfg *pcfg, void * private)
                 
         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);
@@ -260,38 +260,6 @@ kportal_router_cmd(struct portals_cfg *pcfg, void * private)
         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)
 {
@@ -626,9 +594,9 @@ static int init_kportals_module(void)
                 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;
         }
 
@@ -654,7 +622,7 @@ static void exit_kportals_module(void)
 {
         int rc;
 
-        kportal_unregister_router();
+        kportal_nal_unregister(ROUTER);
         remove_proc();
         PtlFini();
 
index 91e817d..f191664 100644 (file)
@@ -100,7 +100,8 @@ pcfg_ioctl(struct portals_cfg *pcfg)
 {
         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);
@@ -1188,14 +1189,15 @@ jt_ptl_add_route (int argc, char **argv)
 
         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);
         }
         
@@ -1250,7 +1252,8 @@ jt_ptl_del_route (int argc, char **argv)
         }
         
         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;
@@ -1258,7 +1261,7 @@ jt_ptl_del_route (int argc, char **argv)
         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);
         }
         
@@ -1309,7 +1312,8 @@ jt_ptl_notify_router (int argc, char **argv)
         }
 
         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... */
@@ -1318,7 +1322,7 @@ jt_ptl_notify_router (int argc, char **argv)
         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);
         }
@@ -1342,13 +1346,14 @@ jt_ptl_print_routes (int argc, char **argv)
         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;
diff --git a/lustre/tests/socketclient b/lustre/tests/socketclient
new file mode 100755 (executable)
index 0000000..5e6e659
--- /dev/null
@@ -0,0 +1,12 @@
+#!/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;  
diff --git a/lustre/tests/socketserver b/lustre/tests/socketserver
new file mode 100755 (executable)
index 0000000..25bbb6e
--- /dev/null
@@ -0,0 +1,21 @@
+#! /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;