-extern int ksocknal_add_sock (ptl_nid_t nid, int fd, int client);
-extern int ksocknal_close_sock(ptl_nid_t nid);
-extern int ksocknal_set_mynid(ptl_nid_t nid);
-extern int ksocknal_push_sock(ptl_nid_t nid);
-extern ksock_conn_t *ksocknal_get_conn (ptl_nid_t nid);
-extern void _ksocknal_put_conn (ksock_conn_t *conn);
-extern void ksocknal_close_conn (ksock_conn_t *conn);
+typedef struct ksock_route
+{
+ struct list_head ksnr_list; /* chain on peer route list */
+ struct list_head ksnr_connect_list; /* chain on autoconnect list */
+ struct ksock_peer *ksnr_peer; /* owning peer */
+ atomic_t ksnr_refcount; /* # users */
+ int ksnr_sharecount; /* lconf usage counter */
+ __u64 ksnr_timeout; /* when reconnection can happen next */
+ unsigned int ksnr_retry_interval; /* how long between retries */
+ __u32 ksnr_ipaddr; /* an IP address for this peer */
+ int ksnr_port; /* port to connect to */
+ int ksnr_buffer_size; /* size of socket buffers */
+ unsigned int ksnr_irq_affinity:1; /* set affinity? */
+ unsigned int ksnr_xchange_nids:1; /* do hello protocol? */
+ unsigned int ksnr_nonagel:1; /* disable nagle? */
+ unsigned int ksnr_connecting; /* autoconnect in progress? */
+ unsigned int ksnr_deleted; /* been removed from peer? */
+ int ksnr_generation; /* connection incarnation # */
+ ksock_conn_t *ksnr_conn; /* NULL/active connection */
+} ksock_route_t;
+
+typedef struct ksock_peer
+{
+ struct list_head ksnp_list; /* stash on global peer list */
+ ptl_nid_t ksnp_nid; /* who's on the other end(s) */
+ atomic_t ksnp_refcount; /* # users */
+ int ksnp_closing; /* being closed */
+ struct list_head ksnp_conns; /* all active connections */
+ struct list_head ksnp_routes; /* routes */
+ struct list_head ksnp_tx_queue; /* waiting packets */
+} ksock_peer_t;