From 76f7d80e80c3217979e92548f7f93cdb96d9f6c5 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Thu, 21 Feb 2013 09:39:23 +0100 Subject: Introduce "features" for the kernel backends returning kernel capabilities --- src/libhydra/kernel/kernel_interface.h | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/libhydra/kernel/kernel_interface.h') diff --git a/src/libhydra/kernel/kernel_interface.h b/src/libhydra/kernel/kernel_interface.h index 8d8ef2e83..8d8d048d0 100644 --- a/src/libhydra/kernel/kernel_interface.h +++ b/src/libhydra/kernel/kernel_interface.h @@ -47,6 +47,7 @@ #define KERNEL_INTERFACE_H_ typedef struct kernel_interface_t kernel_interface_t; +typedef enum kernel_feature_t kernel_feature_t; #include #include @@ -55,6 +56,17 @@ typedef struct kernel_interface_t kernel_interface_t; #include #include +/** + * Bitfield of optional features a kernel backend supports. + * + * This feature-set is for both, kernel_ipsec_t and kernel_net_t. Each + * backend returns a subset of these features. + */ +enum kernel_feature_t { + /** IPsec can process ESPv3 (RFC 4303) TFC padded packets */ + KERNEL_ESP_V3_TFC = (1<<0), +}; + /** * Constructor function for ipsec kernel interface */ @@ -73,6 +85,13 @@ typedef kernel_net_t* (*kernel_net_constructor_t)(void); */ struct kernel_interface_t { + /** + * Get the feature set supported by the net and ipsec kernel backends. + * + * @return ORed feature-set of backends + */ + kernel_feature_t (*get_features)(kernel_interface_t *this); + /** * Get a SPI from the kernel. * -- cgit v1.2.3