summaryrefslogtreecommitdiffstats
path: root/Samples/C#/IPSec/ipsec_lib/swig.i
diff options
context:
space:
mode:
Diffstat (limited to 'Samples/C#/IPSec/ipsec_lib/swig.i')
-rw-r--r--Samples/C#/IPSec/ipsec_lib/swig.i135
1 files changed, 135 insertions, 0 deletions
diff --git a/Samples/C#/IPSec/ipsec_lib/swig.i b/Samples/C#/IPSec/ipsec_lib/swig.i
new file mode 100644
index 0000000..e9bd224
--- /dev/null
+++ b/Samples/C#/IPSec/ipsec_lib/swig.i
@@ -0,0 +1,135 @@
+%module ipsec_lib
+%module(directors="1") ipsec_lib
+
+%include "enums.swg"
+%include <stdint.i>
+
+%define %cs_marshal_array(TYPE, CSTYPE)
+%typemap(ctype) TYPE[] "void*"
+%typemap(imtype,
+inattributes="[MarshalAs(UnmanagedType.LPArray)]") TYPE[] "CSTYPE[]"
+%typemap(cstype) TYPE[] "CSTYPE[]"
+%typemap(in) TYPE[] %{ $1 = (TYPE*)$input; %}
+%typemap(csin) TYPE[] "$csinput"
+%enddef
+
+// Mapping void* as IntPtr
+%typemap(ctype) void * "void *"
+%typemap(imtype) void * "IntPtr"
+%typemap(cstype) void * "IntPtr"
+%typemap(csin) void * "$csinput"
+%typemap(in) void * %{ $1 = $input; %}
+%typemap(out) void * %{ $result = $1; %}
+%typemap(csout) void * { return $imcall; }
+%typemap(csdirectorin) void * "$iminput"
+
+%{
+#include "IPSecCtx.h"
+%}
+
+%nodefaultctor;
+%include "IPSecCtx.h"
+%clearnodefaultctor;
+
+
+/**@def tipsec_lifetime_t
+*/
+/**@def tipsec_spi_t
+*/
+/**@def tipsec_port_t
+*/
+/**@def tipsec_key_t
+*/
+typedef uint64_t tipsec_lifetime_t;
+typedef uint32_t tipsec_spi_t;
+typedef uint16_t tipsec_port_t;
+typedef void tipsec_key_t;
+
+/**@ingroup tipsec_common_group
+ * List of IPSec modes.
+**/
+typedef enum tipsec_mode_e {
+ //! IPSec transport mode.
+ tipsec_mode_trans,
+ //! IPSec tunneling mode.
+ tipsec_mode_tun
+}
+tipsec_mode_t;
+
+/** List of supported IPSec protocols.
+**/
+typedef enum tipsec_proto_e {
+ //! AH protocol ("ah").
+ tipsec_proto_ah = (0x01 << 0),
+ //! ESP protocol ("esp").
+ tipsec_proto_esp = (0x01 << 1),
+ //! Both AH and ESP protocols ("ah/esp").
+ tipsec_proto_both = (tipsec_proto_ah | tipsec_proto_esp)
+}
+tipsec_proto_t;
+
+/**List of supported Internet protocols for IPSec.
+**/
+typedef enum tipsec_ipproto_e {
+ //! UDP.
+ tipsec_ipproto_udp,
+ //! TCP.
+ tipsec_ipproto_tcp,
+ //! ICMP.
+ tipsec_ipproto_icmp,
+ //! ALL.
+ tipsec_ipproto_all
+}
+tipsec_ipproto_t;
+
+/**List of IPSec IPSec algorithms.
+**/
+typedef enum tipsec_alg_e {
+ //! "hmac-md5-96" algorithm.
+ tipsec_alg_hmac_md5_96,
+ //! "hmac-sha-1-96" algorithm.
+ tipsec_alg_hmac_sha_1_96
+}
+tipsec_alg_t;
+
+/**List of supported IPSec encryption algorithms.
+**/
+typedef enum tipsec_ealg_e {
+ //! "des-ede3-cbc" encryption algorithm.
+ tipsec_ealg_des_ede3_cbc,
+ //! "aes" encryption algorithm.
+ tipsec_ealg_aes,
+ //! "null" encryption algorithm.
+ tipsec_ealg_null
+}
+tipsec_ealg_t;
+
+/** List of IPSec states.
+**/
+typedef enum tipsec_state_e {
+ //! The default state. At this state no SA is created. It's the first and default state.
+ tipsec_state_initial,
+ //! Partial state. At this state only inbound SAs (with their SPIs) have been created.
+ tipsec_state_inbound,
+ //! Full state. At this state both inbound and outbound SAs have been create. It's the final state.
+ tipsec_state_full,
+ //! All SAs are in active mode.
+ tipsec_state_active
+}
+tipsec_state_t;
+
+/** List of supported IPSec errors
+*/
+typedef enum tipsec_error_e {
+ tipsec_error_success = 0, /**< Success */
+ tipsec_error_invalid_param, /**< Invalid parameter */
+ tipsec_error_invalid_state, /**< Invalid state */
+ tipsec_error_access_violation, /**< Access violation */
+ tipsec_error_permission_denied, /**< Permission denied */
+ tipsec_error_outofmemory, /**< Out of memory */
+ tipsec_error_outofbound, /**< Out of bound */
+ tipsec_error_notfound, /**< Not found */
+ tipsec_error_notimplemented, /**< Not implemented */
+ tipsec_error_sys, /**< System error */
+}
+tipsec_error_t;
OpenPOWER on IntegriCloud