diff options
author | Yves-Alexis Perez <corsac@debian.org> | 2013-10-17 21:23:38 +0200 |
---|---|---|
committer | Yves-Alexis Perez <corsac@debian.org> | 2013-10-17 21:23:38 +0200 |
commit | 9d37ad77ef660b92ea51b69d74e14f931d2a04e2 (patch) | |
tree | d6bbb4a5fed1959f8675df9ee7c03713b543fcc9 /src/libcharon/network/socket.h | |
parent | 104f57d4b0fb6d7547d6898352eaa5fb4b222010 (diff) | |
parent | e5ee4e7fcdd58b7d86bf1b458da2c63e8e19627b (diff) | |
download | vyos-strongswan-9d37ad77ef660b92ea51b69d74e14f931d2a04e2.tar.gz vyos-strongswan-9d37ad77ef660b92ea51b69d74e14f931d2a04e2.zip |
Merge tag 'v5.1.0-1' into sid
tag strongSwan 5.1.0-1
Diffstat (limited to 'src/libcharon/network/socket.h')
-rw-r--r-- | src/libcharon/network/socket.h | 53 |
1 files changed, 47 insertions, 6 deletions
diff --git a/src/libcharon/network/socket.h b/src/libcharon/network/socket.h index be875035b..e3cda3bea 100644 --- a/src/libcharon/network/socket.h +++ b/src/libcharon/network/socket.h @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2010 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,10 +25,11 @@ #define SOCKET_H_ typedef struct socket_t socket_t; +typedef enum socket_family_t socket_family_t; #include <library.h> -#include <network/packet.h> -#include <utils/enumerator.h> +#include <networking/packet.h> +#include <collections/enumerator.h> #include <plugins/plugin.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,12 +91,27 @@ 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. + * + * @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); + + /** + * 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); }; /** |