diff options
author | Andreas Steffen <andreas.steffen@strongswan.org> | 2009-01-09 08:46:31 +0000 |
---|---|---|
committer | Andreas Steffen <andreas.steffen@strongswan.org> | 2009-01-09 08:46:31 +0000 |
commit | 88db1fa3b442d791d2c2132597ed5f5c751eaa82 (patch) | |
tree | 1d877c73ee3e8a480718721584fd32e99ac578fd /src/charon/plugins/kernel_netlink | |
parent | abc177e03589bb096b79a8a36058e46cf8c45492 (diff) | |
download | strongswan-88db1fa3b442d791d2c2132597ed5f5c751eaa82.tar.bz2 strongswan-88db1fa3b442d791d2c2132597ed5f5c751eaa82.tar.xz |
refactored DBG3 output of sent XFRM messages
Diffstat (limited to 'src/charon/plugins/kernel_netlink')
-rw-r--r-- | src/charon/plugins/kernel_netlink/kernel_netlink_ipsec.c | 71 | ||||
-rw-r--r-- | src/charon/plugins/kernel_netlink/kernel_netlink_shared.c | 42 |
2 files changed, 41 insertions, 72 deletions
diff --git a/src/charon/plugins/kernel_netlink/kernel_netlink_ipsec.c b/src/charon/plugins/kernel_netlink/kernel_netlink_ipsec.c index 7a8f3bd35..3f1c86b2a 100644 --- a/src/charon/plugins/kernel_netlink/kernel_netlink_ipsec.c +++ b/src/charon/plugins/kernel_netlink/kernel_netlink_ipsec.c @@ -104,32 +104,6 @@ struct kernel_algorithm_t { char *name; }; -ENUM(xfrm_msg_names, XFRM_MSG_NEWSA, XFRM_MSG_MAPPING, - "XFRM_MSG_NEWSA", - "XFRM_MSG_DELSA", - "XFRM_MSG_GETSA", - "XFRM_MSG_NEWPOLICY", - "XFRM_MSG_DELPOLICY", - "XFRM_MSG_GETPOLICY", - "XFRM_MSG_ALLOCSPI", - "XFRM_MSG_ACQUIRE", - "XFRM_MSG_EXPIRE", - "XFRM_MSG_UPDPOLICY", - "XFRM_MSG_UPDSA", - "XFRM_MSG_POLEXPIRE", - "XFRM_MSG_FLUSHSA", - "XFRM_MSG_FLUSHPOLICY", - "XFRM_MSG_NEWAE", - "XFRM_MSG_GETAE", - "XFRM_MSG_REPORT", - "XFRM_MSG_MIGRATE", - "XFRM_MSG_NEWSADINFO", - "XFRM_MSG_GETSADINFO", - "XFRM_MSG_NEWSPDINFO", - "XFRM_MSG_GETSPDINFO", - "XFRM_MSG_MAPPING" -); - ENUM(xfrm_attr_type_names, XFRMA_UNSPEC, XFRMA_KMADDRESS, "XFRMA_UNSPEC", "XFRMA_ALG_AUTH", @@ -803,11 +777,6 @@ static status_t get_spi_internal(private_kernel_netlink_ipsec_t *this, userspi->min = min; userspi->max = max; - { - chunk_t chunk = { (u_char*)hdr, hdr->nlmsg_len }; - - DBG3(DBG_KNL, "sending %N: %B", xfrm_msg_names, hdr->nlmsg_type, &chunk); - } if (this->socket_xfrm->send(this->socket_xfrm, hdr, &out, &len) == SUCCESS) { hdr = out; @@ -1116,11 +1085,6 @@ static status_t add_sa(private_kernel_netlink_ipsec_t *this, rthdr = XFRM_RTA_NEXT(rthdr); } - { - chunk_t chunk = { (u_char*)hdr, hdr->nlmsg_len }; - - DBG3(DBG_KNL, "sending %N: %B", xfrm_msg_names, hdr->nlmsg_type, &chunk); - } if (this->socket_xfrm->send_ack(this->socket_xfrm, hdr) != SUCCESS) { DBG1(DBG_KNL, "unable to add SAD entry with SPI %.8x", ntohl(spi)); @@ -1160,11 +1124,6 @@ static status_t get_replay_state(private_kernel_netlink_ipsec_t *this, aevent_id->sa_id.proto = proto_ike2kernel(protocol); aevent_id->sa_id.family = dst->get_family(dst); - { - chunk_t chunk = { (u_char*)hdr, hdr->nlmsg_len }; - - DBG3(DBG_KNL, "sending %N: %B", xfrm_msg_names, hdr->nlmsg_type, &chunk); - } if (this->socket_xfrm->send(this->socket_xfrm, hdr, &out, &len) == SUCCESS) { hdr = out; @@ -1253,11 +1212,6 @@ static status_t del_sa(private_kernel_netlink_ipsec_t *this, host_t *dst, sa_id->proto = proto_ike2kernel(protocol); sa_id->family = dst->get_family(dst); - { - chunk_t chunk = { (u_char*)hdr, hdr->nlmsg_len }; - - DBG3(DBG_KNL, "sending %N: %B", xfrm_msg_names, hdr->nlmsg_type, &chunk); - } if (this->socket_xfrm->send_ack(this->socket_xfrm, hdr) != SUCCESS) { DBG1(DBG_KNL, "unable to delete SAD entry with SPI %.8x", ntohl(spi)); @@ -1311,11 +1265,6 @@ static status_t update_sa(private_kernel_netlink_ipsec_t *this, sa_id->proto = proto_ike2kernel(protocol); sa_id->family = dst->get_family(dst); - { - chunk_t chunk = { (u_char*)hdr, hdr->nlmsg_len }; - - DBG3(DBG_KNL, "sending %N: %B", xfrm_msg_names, hdr->nlmsg_type, &chunk); - } if (this->socket_xfrm->send(this->socket_xfrm, hdr, &out, &len) == SUCCESS) { hdr = out; @@ -1442,11 +1391,6 @@ static status_t update_sa(private_kernel_netlink_ipsec_t *this, rta = XFRM_RTA_NEXT(rta); } - { - chunk_t chunk = { (u_char*)hdr, hdr->nlmsg_len }; - - DBG3(DBG_KNL, "sending %N: %B", xfrm_msg_names, hdr->nlmsg_type, &chunk); - } if (this->socket_xfrm->send_ack(this->socket_xfrm, hdr) != SUCCESS) { DBG1(DBG_KNL, "unable to update SAD entry with SPI %.8x", ntohl(spi)); @@ -1577,11 +1521,6 @@ static status_t add_policy(private_kernel_netlink_ipsec_t *this, host2xfrm(src, &tmpl->saddr); host2xfrm(dst, &tmpl->id.daddr); - { - chunk_t chunk = { (u_char*)hdr, hdr->nlmsg_len }; - - DBG3(DBG_KNL, "sending %N: %B", xfrm_msg_names, hdr->nlmsg_type, &chunk); - } if (this->socket_xfrm->send_ack(this->socket_xfrm, hdr) != SUCCESS) { DBG1(DBG_KNL, "unable to add policy %R === %R %N", src_ts, dst_ts, @@ -1676,11 +1615,6 @@ static status_t query_policy(private_kernel_netlink_ipsec_t *this, policy_id->sel = ts2selector(src_ts, dst_ts); policy_id->dir = direction; - { - chunk_t chunk = { (u_char*)hdr, hdr->nlmsg_len }; - - DBG3(DBG_KNL, "sending %N: %B", xfrm_msg_names, hdr->nlmsg_type, &chunk); - } if (this->socket_xfrm->send(this->socket_xfrm, hdr, &out, &len) == SUCCESS) { hdr = out; @@ -1783,11 +1717,6 @@ static status_t del_policy(private_kernel_netlink_ipsec_t *this, route = to_delete->route; free(to_delete); - { - chunk_t chunk = { (u_char*)hdr, hdr->nlmsg_len }; - - DBG3(DBG_KNL, "sending %N: %B", xfrm_msg_names, hdr->nlmsg_type, &chunk); - } if (this->socket_xfrm->send_ack(this->socket_xfrm, hdr) != SUCCESS) { DBG1(DBG_KNL, "unable to delete policy %R === %R %N", src_ts, dst_ts, diff --git a/src/charon/plugins/kernel_netlink/kernel_netlink_shared.c b/src/charon/plugins/kernel_netlink/kernel_netlink_shared.c index c3715967b..69f75f4d1 100644 --- a/src/charon/plugins/kernel_netlink/kernel_netlink_shared.c +++ b/src/charon/plugins/kernel_netlink/kernel_netlink_shared.c @@ -18,6 +18,7 @@ #include <sys/socket.h> #include <linux/netlink.h> #include <linux/rtnetlink.h> +#include <linux/xfrm.h> #include <errno.h> #include <unistd.h> @@ -46,13 +47,44 @@ struct private_netlink_socket_t { * current sequence number for netlink request */ int seq; - + + /** + * netlink socket protocol + */ + int protocol; + /** * netlink socket */ int socket; }; +ENUM(xfrm_msg_names, XFRM_MSG_NEWSA, XFRM_MSG_MAPPING, + "XFRM_MSG_NEWSA", + "XFRM_MSG_DELSA", + "XFRM_MSG_GETSA", + "XFRM_MSG_NEWPOLICY", + "XFRM_MSG_DELPOLICY", + "XFRM_MSG_GETPOLICY", + "XFRM_MSG_ALLOCSPI", + "XFRM_MSG_ACQUIRE", + "XFRM_MSG_EXPIRE", + "XFRM_MSG_UPDPOLICY", + "XFRM_MSG_UPDSA", + "XFRM_MSG_POLEXPIRE", + "XFRM_MSG_FLUSHSA", + "XFRM_MSG_FLUSHPOLICY", + "XFRM_MSG_NEWAE", + "XFRM_MSG_GETAE", + "XFRM_MSG_REPORT", + "XFRM_MSG_MIGRATE", + "XFRM_MSG_NEWSADINFO", + "XFRM_MSG_GETSADINFO", + "XFRM_MSG_NEWSPDINFO", + "XFRM_MSG_GETSPDINFO", + "XFRM_MSG_MAPPING" +); + /** * Implementation of netlink_socket_t.send */ @@ -74,6 +106,13 @@ static status_t netlink_send(private_netlink_socket_t *this, struct nlmsghdr *in addr.nl_pid = 0; addr.nl_groups = 0; + if (this->protocol == NETLINK_XFRM) + { + chunk_t hdr = { (u_char*)in, in->nlmsg_len }; + + DBG3(DBG_KNL, "sending %N: %B", xfrm_msg_names, in->nlmsg_type, &hdr); + } + while (TRUE) { len = sendto(this->socket, in, in->nlmsg_len, 0, @@ -245,6 +284,7 @@ netlink_socket_t *netlink_socket_create(int protocol) { memset(&addr, 0, sizeof(addr)); addr.nl_family = AF_NETLINK; + this->protocol = protocol; this->socket = socket(AF_NETLINK, SOCK_RAW, protocol); if (this->socket <= 0) { |