Show contents of the CP payload in message_t stringification

This commit is contained in:
Martin Willi 2010-06-24 15:45:38 +02:00
parent 1e723d739c
commit 6a4a47511f
3 changed files with 85 additions and 0 deletions

View File

@ -31,6 +31,7 @@
#include <encoding/payloads/payload.h>
#include <encoding/payloads/encryption_payload.h>
#include <encoding/payloads/unknown_payload.h>
#include <encoding/payloads/cp_payload.h>
/**
* Max number of notify payloads per IKEv2 Message
@ -975,6 +976,39 @@ static char* get_string(private_message_t *this, char *buf, int len)
pos += written;
len -= written;
}
if (payload->get_type(payload) == CONFIGURATION)
{
cp_payload_t *cp = (cp_payload_t*)payload;
enumerator_t *attributes;
configuration_attribute_t *attribute;
bool first = TRUE;
attributes = cp->create_attribute_enumerator(cp);
while (attributes->enumerate(attributes, &attribute))
{
written = snprintf(pos, len, "%s%N", first ? "(" : " ",
configuration_attribute_type_short_names,
attribute->get_type(attribute));
if (written >= len || written < 0)
{
return buf;
}
pos += written;
len -= written;
first = FALSE;
}
attributes->destroy(attributes);
if (!first)
{
written = snprintf(pos, len, ")");
if (written >= len || written < 0)
{
return buf;
}
pos += written;
len -= written;
}
}
}
enumerator->destroy(enumerator);

View File

@ -64,3 +64,49 @@ ENUM_NEXT(configuration_attribute_type_names, UNITY_BANNER, UNITY_DDNS_HOSTNAME,
"UNITY_DDNS_HOSTNAME");
ENUM_END(configuration_attribute_type_names, UNITY_DDNS_HOSTNAME);
ENUM_BEGIN(configuration_attribute_type_short_names, INTERNAL_IP4_ADDRESS, INTERNAL_IP6_PREFIX,
"ADDR",
"MASK",
"DNS",
"NBNS",
"EXP",
"DHCP",
"VER",
"ADDR6",
"MASK6",
"DNS6",
"NBNS6",
"DHCP6",
"SUBNET",
"SUPPORTED",
"SUBNET6",
"MIP6HPFX",
"LINK6",
"PFX6");
ENUM_NEXT(configuration_attribute_type_short_names, XAUTH_TYPE, XAUTH_ANSWER, INTERNAL_IP6_PREFIX,
"XAUTH_TYPE",
"XAUTH_USER_NAME",
"XAUTH_USER_PASSWORD",
"XAUTH_PASSCODE",
"XAUTH_MESSAGE",
"XAUTH_CHALLENGE",
"XAUTH_DOMAIN",
"XAUTH_STATUS",
"XAUTH_NEXT_PIN",
"XAUTH_ANSWER");
ENUM_NEXT(configuration_attribute_type_short_names, INTERNAL_IP4_SERVER, INTERNAL_IP6_SERVER, XAUTH_ANSWER,
"SRV",
"SRV6");
ENUM_NEXT(configuration_attribute_type_short_names, UNITY_BANNER, UNITY_DDNS_HOSTNAME, INTERNAL_IP6_SERVER,
"UNITY_BANNER",
"UNITY_SAVE_PASSWD",
"UNITY_DEF_DOMAIN",
"UNITY_SPLITDNS_NAME",
"UNITY_SPLIT_INCLUDE",
"UNITY_NATT_PORT",
"UNITY_LOCAL_LAN",
"UNITY_PFS",
"UNITY_FW_TYPE",
"UNITY_BACKUP_SERVERS",
"UNITY_DDNS_HOSTNAME");
ENUM_END(configuration_attribute_type_short_names, UNITY_DDNS_HOSTNAME);

View File

@ -81,5 +81,10 @@ enum configuration_attribute_type_t {
*/
extern enum_name_t *configuration_attribute_type_names;
/**
* Short enum names for configuration_attribute_type_t.
*/
extern enum_name_t *configuration_attribute_type_short_names;
#endif /** ATTRIBUTES_H_ @}*/