]> granicus.if.org Git - libnl/commitdiff
python: capi: add nla_put() function to python capi
authorArend van Spriel <aspriel@gmail.com>
Sun, 10 May 2015 10:22:17 +0000 (12:22 +0200)
committerThomas Haller <thaller@redhat.com>
Tue, 12 May 2015 11:26:15 +0000 (13:26 +0200)
Adding nla_put() to the capi using a typemap on the input
parameter which needs to be either a str or bytearray.
Otherwise a SWIG exception with be thrown.

Signed-off-by: Arend van Spriel <aspriel@gmail.com>
python/netlink/capi.i

index f59effa6154e433f3ff0cb90026fe594d57c7e84..98f4e33eebaf414e6e6b96faf93272a7801fc991 100644 (file)
@@ -17,6 +17,7 @@
 %include <stdint.i>
 %include <cstring.i>
 %include <cpointer.i>
+%include <exception.i>
 
 %inline %{
         struct nl_dump_params *alloc_dump_params(void)
@@ -812,6 +813,19 @@ extern void *nla_data(struct nlattr *);
 %typemap(out) void *;
 extern int             nla_type(const struct nlattr *);
 
+%typemap(in) (int, const void *) {
+       $1 = Py_SIZE($input);
+       if (PyByteArray_Check($input)) {
+               $2 = ($2_ltype)PyByteArray_AsString($input);
+       } else if (PyString_Check($input)) {
+               $2 = ($2_ltype)PyString_AsString($input);
+       } else
+               SWIG_exception(SWIG_TypeError,
+                              "pointer must be bytearray or string.");
+}
+extern int              nla_put(struct nl_msg *, int, int, const void *);
+%typemap(in) const void *;
+
 /* Integer attribute */
 extern uint8_t         nla_get_u8(struct nlattr *);
 extern int             nla_put_u8(struct nl_msg *, int, uint8_t);