Python API: Add support for shared memory prefix 74/3274/3
authorOle Troan <ot@cisco.com>
Wed, 5 Oct 2016 09:10:50 +0000 (11:10 +0200)
committerDamjan Marion <dmarion.lists@gmail.com>
Wed, 5 Oct 2016 11:39:14 +0000 (11:39 +0000)
Recheck.
This is to support multiple VPP instances on same host.

Change-Id: Ibe511b1f790fc8771900085577423f7e71dc45df
Signed-off-by: Ole Troan <ot@cisco.com>
vpp-api/python/pneum/pneum.c
vpp-api/python/pneum/pneum.h
vpp-api/python/pneum/test_pneum.c
vpp-api/python/vpp_papi/pneum_wrap.c
vpp-api/python/vpp_papi/vpp_papi.py

index 7250cf6..ebe47b2 100644 (file)
@@ -116,11 +116,14 @@ pneum_rx_thread_fn (void *arg)
 }
 
 int
-pneum_connect (char *name)
+pneum_connect (char * name, char * chroot_prefix)
 {
   int rv = 0;
   pneum_main_t *pm = &pneum_main;
 
+  if (chroot_prefix != NULL)
+    vl_set_memory_root_path (chroot_prefix);
+
   if ((rv = vl_client_api_map("/vpe-api"))) {
     clib_warning ("vl_client_api map rv %d", rv);
     return rv;
index 75fccf8..75b10f8 100644 (file)
@@ -15,7 +15,7 @@
 #ifndef included_pneum_h
 #define included_pneum_h
 
-int pneum_connect(char *name);
+int pneum_connect(char * name, char * chroot_prefix);
 int pneum_disconnect(void);
 int pneum_read(char **data, int *l);
 int pneum_write(char *data, int len);
index b313195..20c29a7 100644 (file)
@@ -76,7 +76,7 @@ int main (int argc, char ** argv)
   vl_api_show_version_t message;
   vl_api_show_version_t *mp;
   int async = 1;
-  int rv = pneum_connect("pneum_client");
+  int rv = pneum_connect("pneum_client", NULL);
 
   if (rv != 0) {
     printf("Connect failed: %d\n", rv);
index 7a51197..18c4f23 100644 (file)
@@ -44,11 +44,11 @@ wrap_pneum_callback (char *data, int len)
 static PyObject *
 wrap_connect (PyObject *self, PyObject *args)
 {
-  char *name;
+  char * name, * chroot_prefix = NULL;
   int rv;
-  PyObject *temp;
+  PyObject * temp;
 
-  if (!PyArg_ParseTuple(args, "sO:set_callback", &name, &temp))
+  if (!PyArg_ParseTuple(args, "sO|s:wrap_connect", &name, &temp, &chroot_prefix))
     return (NULL);
 
   if (!PyCallable_Check(temp)) {
@@ -61,7 +61,7 @@ wrap_connect (PyObject *self, PyObject *args)
   pneum_callback = temp;       /* Remember new callback */
 
   Py_BEGIN_ALLOW_THREADS
-  rv = pneum_connect(name);
+  rv = pneum_connect(name, chroot_prefix);
   Py_END_ALLOW_THREADS
   return PyLong_FromLong(rv);
 }
index 42ddcdc..9c2d2b2 100644 (file)
@@ -86,12 +86,16 @@ def handler(signum, frame):
     print('Signal handler called with signal', signum)
     raise IOError("Couldn't connect to VPP!")
 
-def connect(name):
+def connect(name, chroot_prefix = None):
     # Set the signal handler
     signal.signal(signal.SIGALRM, handler)
 
     signal.alarm(3) # 3 second
-    rv = vpp_api.connect(name, msg_handler)
+    if not chroot_prefix:
+        rv = vpp_api.connect(name, msg_handler)
+    else:
+        rv = vpp_api.connect(name, msg_handler, chroot_prefix)
+
     signal.alarm(0)
 
     #