Setup the rx connections for the Ubik client.
authorEvan Broder <broder@mit.edu>
Sun, 21 Dec 2008 21:21:13 +0000 (15:21 -0600)
committerEvan Broder <broder@mit.edu>
Sun, 21 Dec 2008 21:21:13 +0000 (15:21 -0600)
Signed-off-by: Evan Broder <broder@mit.edu>

afs/_pts.pyx
afs/afs.pxd

index 66fefd9..df7397c 100644 (file)
@@ -11,6 +11,8 @@ cdef class PTS:
         cdef ktc_principal prin
         cdef ktc_token token
         cdef rx_securityClass *sc
         cdef ktc_principal prin
         cdef ktc_token token
         cdef rx_securityClass *sc
+        cdef rx_connection *serverconns[MAXSERVERS]
+        cdef int i
         
         if cell is None:
             c_cell = NULL
         
         if cell is None:
             c_cell = NULL
@@ -57,6 +59,14 @@ cdef class PTS:
         else:
             sec = 2
         
         else:
             sec = 2
         
+        memset(serverconns, 0, sizeof(serverconns))
+        for 0 <= i < info.numServers:
+            serverconns[i] = rx_NewConnection(info.hostAddr[i].sin_addr.s_addr,
+                                              info.hostAddr[i].sin_port,
+                                              PRSRV,
+                                              sc,
+                                              sec)
+        
         code = rxs_Release(sc)
     
     def __dealloc__(self):
         code = rxs_Release(sc)
     
     def __dealloc__(self):
index 36ab76c..06cf0d7 100644 (file)
@@ -7,6 +7,7 @@ cdef extern from "errno.h":
 cdef extern from "string.h":
     char * strerror(int errnum)
     char * strncpy(char *s1, char *s2, size_t n)
 cdef extern from "string.h":
     char * strerror(int errnum)
     char * strncpy(char *s1, char *s2, size_t n)
+    void * memset(void *b, int c, size_t n)
 
 cdef extern from "netinet/in.h":
     struct in_addr:
 
 cdef extern from "netinet/in.h":
     struct in_addr:
@@ -18,6 +19,7 @@ cdef extern from "netinet/in.h":
         char sin_zero[8]
 
 cdef extern from "afs/stds.h":
         char sin_zero[8]
 
 cdef extern from "afs/stds.h":
+    ctypedef unsigned long afs_uint32
     ctypedef long afs_int32
 
 cdef extern from "afs/dirpath.h":
     ctypedef long afs_int32
 
 cdef extern from "afs/dirpath.h":
@@ -58,14 +60,6 @@ cdef extern from "ubik.h":
     struct ubik_client:
         pass
 
     struct ubik_client:
         pass
 
-cdef extern from "rx/rx.h":
-    int rx_Init(int port)
-    void rx_Finalize()
-
-cdef extern from *:
-    struct ktc_encryptionKey:
-        pass
-
 cdef extern from "rx/rxkad.h":
     ctypedef char rxkad_level
     
 cdef extern from "rx/rxkad.h":
     ctypedef char rxkad_level
     
@@ -77,6 +71,9 @@ cdef extern from "rx/rxkad.h":
         rxkad_clear
         rxkad_crypt
     
         rxkad_clear
         rxkad_crypt
     
+    struct ktc_encryptionKey:
+        pass
+
     struct ktc_principal:
         char name[MAXKTCNAMELEN]
         char instance[MAXKTCNAMELEN]
     struct ktc_principal:
         char name[MAXKTCNAMELEN]
         char instance[MAXKTCNAMELEN]
@@ -94,6 +91,19 @@ cdef extern from "rx/rxkad.h":
     
     int rxs_Release(rx_securityClass *aobj)
 
     
     int rxs_Release(rx_securityClass *aobj)
 
+cdef extern from "rx/rx.h":
+    int rx_Init(int port)
+    void rx_Finalize()
+    
+    struct rx_connection:
+        pass
+    
+    rx_connection *rx_NewConnection(afs_uint32 shost,
+                                    unsigned short sport,
+                                    unsigned short sservice,
+                                    rx_securityClass *securityObject,
+                                    int serviceSecurityIndex)
+
 cdef extern from "afs/auth.h":
     enum:
         MAXKTCTICKETLEN
 cdef extern from "afs/auth.h":
     enum:
         MAXKTCTICKETLEN
@@ -109,5 +119,9 @@ cdef extern from "afs/auth.h":
                      int tokenLen,
                      ktc_principal *client)
 
                      int tokenLen,
                      ktc_principal *client)
 
+cdef extern from "afs/prclient.h":
+    enum:
+        PRSRV
+
 cdef extern from "afs/com_err.h":
     char * error_message(int)
 cdef extern from "afs/com_err.h":
     char * error_message(int)