diff options
author | Tobias Brunner <tobias@strongswan.org> | 2012-02-23 11:35:16 +0100 |
---|---|---|
committer | Tobias Brunner <tobias@strongswan.org> | 2012-08-08 15:12:24 +0200 |
commit | 65da43e2fceb74f297a280c034000a7c01538703 (patch) | |
tree | db319c5b4551d3be672d3b3a1e5bc4aea6cf66fa /src/libcharon/plugins/socket_raw/socket_raw_socket.c | |
parent | a405760395b126c08cb77212acc3d823b9e27448 (diff) | |
download | strongswan-65da43e2fceb74f297a280c034000a7c01538703.tar.bz2 strongswan-65da43e2fceb74f297a280c034000a7c01538703.tar.xz |
Handle Non-ESP marker in receiver and not individual socket plugins.
Diffstat (limited to 'src/libcharon/plugins/socket_raw/socket_raw_socket.c')
-rw-r--r-- | src/libcharon/plugins/socket_raw/socket_raw_socket.c | 24 |
1 files changed, 5 insertions, 19 deletions
diff --git a/src/libcharon/plugins/socket_raw/socket_raw_socket.c b/src/libcharon/plugins/socket_raw/socket_raw_socket.c index 539411379..f363671c1 100644 --- a/src/libcharon/plugins/socket_raw/socket_raw_socket.c +++ b/src/libcharon/plugins/socket_raw/socket_raw_socket.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2010 Tobias Brunner + * Copyright (C) 2006-2012 Tobias Brunner * Copyright (C) 2005-2010 Martin Willi * Copyright (C) 2006 Daniel Roethlisberger * Copyright (C) 2005 Jan Hutter @@ -203,16 +203,9 @@ METHOD(socket_t, receiver, status_t, pkt->set_destination(pkt, dest); DBG2(DBG_NET, "received packet: from %#H to %#H", source, dest); data_offset = IP_LEN + UDP_LEN; - /* remove non esp marker */ - if (dest->get_port(dest) == CHARON_NATT_PORT) - { - data_offset += MARKER_LEN; - } - /* fill in packet */ data.len = bytes_read - data_offset; - data.ptr = malloc(data.len); - memcpy(data.ptr, buffer + data_offset, data.len); - pkt->set_data(pkt, data); + data.ptr = buffer + data_offset; + pkt->set_data(pkt, chunk_clone(data)); } else if (this->recv6 && FD_ISSET(this->recv6, &rfds)) { @@ -290,16 +283,9 @@ METHOD(socket_t, receiver, status_t, pkt->set_destination(pkt, dest); DBG2(DBG_NET, "received packet: from %#H to %#H", source, dest); data_offset = UDP_LEN; - /* remove non esp marker */ - if (dest->get_port(dest) == CHARON_NATT_PORT) - { - data_offset += MARKER_LEN; - } - /* fill in packet */ data.len = bytes_read - data_offset; - data.ptr = malloc(data.len); - memcpy(data.ptr, buffer + data_offset, data.len); - pkt->set_data(pkt, data); + data.ptr = buffer + data_offset; + pkt->set_data(pkt, chunk_clone(data)); } else { |