aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorAndreas Steffen <andreas.steffen@strongswan.org>2010-05-20 17:24:43 +0200
committerAndreas Steffen <andreas.steffen@strongswan.org>2010-05-20 17:24:43 +0200
commitc2d10df6e7e0f371c07fb86bd1ed9760e92989b0 (patch)
treea6b13c7fefabdb8bfd0a1db39a6aab8f3ba02b8e /src
parent05f1096cd84daafa4f46ccfbf401dc262c7086cc (diff)
downloadstrongswan-c2d10df6e7e0f371c07fb86bd1ed9760e92989b0.tar.bz2
strongswan-c2d10df6e7e0f371c07fb86bd1ed9760e92989b0.tar.xz
implement ipsec pool -showattr function
Diffstat (limited to 'src')
-rw-r--r--src/libhydra/plugins/attr_sql/pool.c8
-rw-r--r--src/libhydra/plugins/attr_sql/pool_attributes.c39
-rw-r--r--src/libhydra/plugins/attr_sql/pool_attributes.h10
3 files changed, 57 insertions, 0 deletions
diff --git a/src/libhydra/plugins/attr_sql/pool.c b/src/libhydra/plugins/attr_sql/pool.c
index 771281467..ac11c4d03 100644
--- a/src/libhydra/plugins/attr_sql/pool.c
+++ b/src/libhydra/plugins/attr_sql/pool.c
@@ -957,6 +957,7 @@ static void do_args(int argc, char *argv[])
OP_ADD_ATTR,
OP_DEL,
OP_DEL_ATTR,
+ OP_SHOW_ATTR,
OP_RESIZE,
OP_LEASES,
OP_PURGE,
@@ -984,6 +985,7 @@ static void do_args(int argc, char *argv[])
{ "statusattr", no_argument, NULL, '1' },
{ "addattr", required_argument, NULL, '2' },
{ "delattr", required_argument, NULL, '3' },
+ { "showattr", no_argument, NULL, '4' },
{ "batch", required_argument, NULL, 'b' },
{ "start", required_argument, NULL, 's' },
@@ -1040,6 +1042,9 @@ static void do_args(int argc, char *argv[])
name = optarg;
operation = OP_DEL_ATTR;
continue;
+ case '4':
+ operation = OP_SHOW_ATTR;
+ continue;
case 'r':
name = optarg;
operation = OP_RESIZE;
@@ -1162,6 +1167,9 @@ static void do_args(int argc, char *argv[])
del_attr(name, value, value_type);
break;
+ case OP_SHOW_ATTR:
+ show_attr();
+ break;
case OP_RESIZE:
if (end == NULL)
{
diff --git a/src/libhydra/plugins/attr_sql/pool_attributes.c b/src/libhydra/plugins/attr_sql/pool_attributes.c
index 5b1c670bc..52314aa89 100644
--- a/src/libhydra/plugins/attr_sql/pool_attributes.c
+++ b/src/libhydra/plugins/attr_sql/pool_attributes.c
@@ -29,6 +29,13 @@ extern database_t *db;
#define UNITY_NETWORK_LEN 14
+ENUM(value_type_names, VALUE_HEX, VALUE_SUBNET,
+ "hex",
+ "string",
+ "server",
+ "subnet"
+);
+
typedef struct attr_info_t attr_info_t;
struct attr_info_t {
@@ -448,3 +455,35 @@ void status_attr(void)
enumerator->destroy(enumerator);
}
}
+
+/**
+ * ipsec pool --showattr - show all supported attribute keywords
+ */
+void show_attr(void)
+{
+ int i;
+
+ for (i = 0; i < countof(attr_info); i++)
+ {
+ char value_name[10];
+
+
+ snprintf(value_name, sizeof(value_name), "%N",
+ value_type_names, attr_info[i].value_type);
+
+ printf("%-19s --%-6s (%N",
+ attr_info[i].keyword, value_name,
+ configuration_attribute_type_names, attr_info[i].type);
+
+ if (attr_info[i].type_ip6)
+ {
+ printf(", %N)\n",
+ configuration_attribute_type_names, attr_info[i].type_ip6);
+ }
+ else
+ {
+ printf(")\n");
+ }
+ }
+}
+
diff --git a/src/libhydra/plugins/attr_sql/pool_attributes.h b/src/libhydra/plugins/attr_sql/pool_attributes.h
index df7b57de4..fcbe70f49 100644
--- a/src/libhydra/plugins/attr_sql/pool_attributes.h
+++ b/src/libhydra/plugins/attr_sql/pool_attributes.h
@@ -29,6 +29,11 @@ enum value_type_t {
};
/**
+ * enum names for value_type_t.
+ */
+extern enum_name_t *value_type_names;
+
+/**
* ipsec pool --addattr <type> - add attribute entry
*/
void add_attr(char *name, char *value, value_type_t value_type);
@@ -43,6 +48,11 @@ void del_attr(char *name, char *value, value_type_t value_type);
*/
void status_attr(void);
+/**
+ * ipsec pool --showattr - show all supported attribute keywords
+ */
+void show_attr(void);
+
#endif /* POOL_ATTRIBUTES_H_ */