summaryrefslogtreecommitdiff
path: root/src/libcharon/network/socket.h
diff options
context:
space:
mode:
authorYves-Alexis Perez <corsac@debian.org>2013-08-25 15:37:27 +0200
committerYves-Alexis Perez <corsac@debian.org>2013-08-25 15:37:27 +0200
commitc7307e752d8f47c68f834e22ee2ce0a14a70e695 (patch)
treefbb442a20ab54aad511b46a070e65b8d09c22791 /src/libcharon/network/socket.h
parentf74c6d77c3efb529e7403eeef0613c061eb895b3 (diff)
parent6b99c8d9cff7b3e8ae8f3204b99e7ea40f791349 (diff)
downloadvyos-strongswan-c7307e752d8f47c68f834e22ee2ce0a14a70e695.tar.gz
vyos-strongswan-c7307e752d8f47c68f834e22ee2ce0a14a70e695.zip
Merge tag 'upstream/5.1.0'
Upstream version 5.1.0
Diffstat (limited to 'src/libcharon/network/socket.h')
-rw-r--r--src/libcharon/network/socket.h43
1 files changed, 38 insertions, 5 deletions
diff --git a/src/libcharon/network/socket.h b/src/libcharon/network/socket.h
index f6c8a8660..e3cda3bea 100644
--- a/src/libcharon/network/socket.h
+++ b/src/libcharon/network/socket.h
@@ -1,5 +1,5 @@
/*
- * Copyright (C) 2006-2012 Tobias Brunner
+ * Copyright (C) 2006-2013 Tobias Brunner
* Copyright (C) 2005-2010 Martin Willi
* Copyright (C) 2006 Daniel Roethlisberger
* Copyright (C) 2005 Jan Hutter
@@ -25,6 +25,7 @@
#define SOCKET_H_
typedef struct socket_t socket_t;
+typedef enum socket_family_t socket_family_t;
#include <library.h>
#include <networking/packet.h>
@@ -37,6 +38,31 @@ typedef struct socket_t socket_t;
typedef socket_t *(*socket_constructor_t)();
/**
+ * Address families supported by socket implementations.
+ */
+enum socket_family_t {
+ /**
+ * No address families supported
+ */
+ SOCKET_FAMILY_NONE = 0,
+
+ /**
+ * IPv4
+ */
+ SOCKET_FAMILY_IPV4 = (1 << 0),
+
+ /**
+ * IPv6
+ */
+ SOCKET_FAMILY_IPV6 = (1 << 1),
+
+ /**
+ * Both address families supported
+ */
+ SOCKET_FAMILY_BOTH = (1 << 2) - 1,
+};
+
+/**
* Socket interface definition.
*/
struct socket_t {
@@ -52,7 +78,7 @@ struct socket_t {
* - SUCCESS when packet successfully received
* - FAILED when unable to receive
*/
- status_t (*receive) (socket_t *this, packet_t **packet);
+ status_t (*receive)(socket_t *this, packet_t **packet);
/**
* Send a packet.
@@ -65,7 +91,7 @@ struct socket_t {
* - SUCCESS when packet successfully sent
* - FAILED when unable to send
*/
- status_t (*send) (socket_t *this, packet_t *packet);
+ status_t (*send)(socket_t *this, packet_t *packet);
/**
* Get the port this socket is listening on.
@@ -73,12 +99,19 @@ struct socket_t {
* @param nat_t TRUE to get the port used to float in case of NAT-T
* @return the port
*/
- u_int16_t (*get_port) (socket_t *this, bool nat_t);
+ u_int16_t (*get_port)(socket_t *this, bool nat_t);
+
+ /**
+ * Get the address families this socket is listening on.
+ *
+ * @return supported families
+ */
+ socket_family_t (*supported_families)(socket_t *this);
/**
* Destroy a socket implementation.
*/
- void (*destroy) (socket_t *this);
+ void (*destroy)(socket_t *this);
};
/**