From 01d4cdafb7a9bc6b852b42660e2b3c99853362e1 Mon Sep 17 00:00:00 2001 From: "user@SRH-Linux-01.(none)" Date: Mon, 28 Jul 2014 16:19:31 +0000 Subject: [PATCH] Flipped msg sublelem 5 and 4 when sending AC descriptor. Cisco does not know about hardware version msg subelement (4) in AC Descriptor message??? Sending software version sub element(5) first brings Cisco to accept the whole message. FossilOrigin-Name: af46e72eea639db67c970ae624d6f3d1f2d957da5aa57ff9d6fa39e1a1b914e8 --- src/capwap/cwmsg_addelem_ac_descriptor.c | 19 ++++++++++--------- 1 file changed, 10 insertions(+), 9 deletions(-) diff --git a/src/capwap/cwmsg_addelem_ac_descriptor.c b/src/capwap/cwmsg_addelem_ac_descriptor.c index 3d033cf4..952bdb01 100644 --- a/src/capwap/cwmsg_addelem_ac_descriptor.c +++ b/src/capwap/cwmsg_addelem_ac_descriptor.c @@ -31,24 +31,25 @@ void cwmsg_addelem_ac_descriptor(struct cwmsg *msg,struct ac_info * acinfo) int len = 12; int sublen; - /* hardware version subelement */ - *((uint32_t*)(acd+len))=0; - len+=4; - sublen=strlen(acinfo->hardware_version); - *((uint32_t*)(acd+len))=htonl((4<<16)|sublen); - len+=4; - memcpy(acd+len,acinfo->hardware_version,sublen); - len+=sublen; /* software version subelement */ *((uint32_t*)(acd+len))=0; len+=4; - sublen=strlen(acinfo->software_version); + sublen=strlen((const char*)acinfo->software_version); *((uint32_t*)(acd+len))=htonl((5<<16)|sublen); len+=4; memcpy(acd+len,acinfo->software_version,sublen); len+=sublen; + /* hardware version subelement */ + *((uint32_t*)(acd+len))=0; + len+=4; + sublen=strlen((const char*)acinfo->hardware_version); + *((uint32_t*)(acd+len))=htonl((4<<16)|sublen); + len+=4; + memcpy(acd+len,acinfo->hardware_version,sublen); + len+=sublen; + cwmsg_addelem(msg,CWMSGELEM_AC_DESCRIPTOR,acd,len);