/*
    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 
/*
 * for each capwap message element in msgelems call the callback function
 */
int cw_foreach_msgelem(uint8_t * msgelems, int len,
		       int (*callback) (void *, int, uint8_t *, int),
		       void *arg)
{
	uint32_t val;
	int type;
	int elen;
	int i = 0;
	do {
		val = ntohl(*(uint32_t *) (msgelems + i));
		type = (val >> 16) & 0xFFFF;
		elen = val & 0xffff;
		if (i + elen + 4 > len) {
printf("***************************************************************************\n");
printf("Type: %d\n",type);
printf("Bumm %d %d\n",i+elen+4,len);
			return 0;
		}
		callback(arg, type, msgelems + i + 4, elen);
		i += elen + 4;
	} while (i < len);
	return 1;
}