From 09c1e6453bab7855c3be8f8fb0f487698f749755 Mon Sep 17 00:00:00 2001 From: "7u83@mail.ru" <7u83@mail.ru@noemail.net> Date: Mon, 25 Aug 2014 22:11:20 +0000 Subject: [PATCH] Reading of mtu discovery msgelem. FossilOrigin-Name: 0814d4a3e43bb4adc1448b3afcfd5d6c51d4e11d6c1f758d367ed8a2f3cb4bd3 --- src/capwap/Makefile | 1 + .../cw_readelem_mtu_discovery_padding.c | 40 +++++++++++++++++++ src/capwap/cwread_discovery_request.c | 5 +++ 3 files changed, 46 insertions(+) create mode 100644 src/capwap/cw_readelem_mtu_discovery_padding.c diff --git a/src/capwap/Makefile b/src/capwap/Makefile index bae68c75..0a4d40a5 100644 --- a/src/capwap/Makefile +++ b/src/capwap/Makefile @@ -121,6 +121,7 @@ CAPWAPOBJS= \ cw_readelem_radio_administrative_state.o \ cw_readelem_radio_operational_state.o \ cw_readelem_statistics_timer.o \ + cw_readelem_mtu_discovery_padding.o \ cw_readelem_wtp_reboot_statistics.o\ cwmsg_addelem_vendor_cisco_ap_timesync.o \ lw_checksum.o diff --git a/src/capwap/cw_readelem_mtu_discovery_padding.c b/src/capwap/cw_readelem_mtu_discovery_padding.c new file mode 100644 index 00000000..79b9f175 --- /dev/null +++ b/src/capwap/cw_readelem_mtu_discovery_padding.c @@ -0,0 +1,40 @@ +/* + This file is part of libcapwap. + + libcapwap is free software: you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation, either version 3 of the License, or + (at your option) any later version. + + libcapwap is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with Foobar. If not, see . + +*/ + + +#include "capwap.h" +#include "cw_log.h" + +int cw_readelem_mtu_discovery_padding(int type, uint8_t * msgelem, int len) +{ + if (type != CWMSGELEM_MTU_DISCOVERY_PADDING) + return 0; + if (!cw_dbg_is_level(DBG_CW_RFC)) + return 1; + + int i, n = 0; + for (i = 0; i < len; i++) { + if (msgelem[i] != 0xff) + n++; + } + if (n) + cw_dbg(DBG_CW_RFC, + "MTU discovery padding msgelem contains %d non-0xFF byte(s) out of %d, See RFC 5415.", + n, len); + return 1; +} diff --git a/src/capwap/cwread_discovery_request.c b/src/capwap/cwread_discovery_request.c index 8783c24d..de03eaf1 100644 --- a/src/capwap/cwread_discovery_request.c +++ b/src/capwap/cwread_discovery_request.c @@ -61,6 +61,11 @@ static int wtpinfo_readelem_discovery_req(void *eparm, int type, (e->wtpinfo, type, msgelem, len)) goto foundX; + /* non-mandatory mesage lements */ + if (cw_readelem_mtu_discovery_padding(type,msgelem,len)) + return 1; + + return 0; foundX: cw_mand_elem_found(e->mand, type);