More work on CW VM code ..

FossilOrigin-Name: 3b0cb324535527b32d0e938b03151c75f6100ca2059fc121e2c4d350a8caf8a4
This commit is contained in:
7u83@mail.ru
2015-04-10 15:14:55 +00:00
parent e148b7c9f6
commit c43f85b2a6
59 changed files with 1188 additions and 459 deletions

View File

@ -12,15 +12,26 @@ struct args {
static int check_mand_cb(void *priv, void *val)
{
cw_action_in_t *a = (cw_action_in_t*)val;
struct args *args = (struct args*) priv;
printf("Na?\n");
return 1;
if ( (args->a->msg_id != a->msg_id) || (args->a->capwap_state != a->capwap_state))
{
printf ("Was soll das denn?\n");
printf("End of fun\n");
return 0;
}
printf("Nu?\n");
return 1;
// printf("Found wat %d %d %c\n",a->msg_id,a->elem_id, a->mand ? '*':' ');
printf("Found wat %d %d %c\n",a->msg_id,a->elem_id, a->mand ? '*':'-');
if (a->mand) {
int i = a->item_id;
void * rc = avltree_del(args->mand,&i);
@ -40,6 +51,8 @@ static int check_mand_cb(void *priv, void *val)
int cw_check_missing_mand(cw_action_in_t ** out, struct conn * conn, cw_action_in_t *a)
{
cw_action_in_t as;
as.capwap_state = a->capwap_state;
@ -48,6 +61,29 @@ int cw_check_missing_mand(cw_action_in_t ** out, struct conn * conn, cw_action_i
as.elem_id = 0;
as.proto=0;
DEFINE_AVLITER(it,conn->actions->in);
int n=0;
avliter_foreach_from(&it,&as) {
cw_action_in_t * a = avliter_get(&it);
if (a->msg_id != as.msg_id)
break;
if (!a->mand)
continue;
int i = a->item_id;
void * rc = avltree_del(conn->mand,&i);
if (!rc) {
out[n++]=a;
}
}
/*
struct args args;
args.a = &as;
args.mand=conn->mand;
@ -55,8 +91,8 @@ int cw_check_missing_mand(cw_action_in_t ** out, struct conn * conn, cw_action_i
args.n=0;
avltree_foreach_from_asc(conn->actions->in,&as,check_mand_cb,&args);
return args.n;
*/
return n;
}