if(errflag) *errflag = 0;
/* Make sure this is not a duplicate */
- for(p=(PortObjectItem*)sflist_firstpos(po->item_list,&pos);
+ for(p=(PortObjectItem*)sflist_first(po->item_list,&pos);
p != 0;
- p=(PortObjectItem*)sflist_nextpos(po->item_list,&pos) )
+ p=(PortObjectItem*)sflist_next(&pos) )
{
if((p->lport == poi->lport) && (p->hport == poi->hport))
{
if(errflag) *errflag = 0;
- for(po=(PortObjectItem*)sflist_firstpos(posrc->item_list, &pos);
+ for(po=(PortObjectItem*)sflist_first(posrc->item_list, &pos);
po != 0;
- po=(PortObjectItem*)sflist_nextpos(posrc->item_list, &pos) )
+ po=(PortObjectItem*)sflist_next(&pos) )
{
PortObjectItem *poi = PortObjectItemDup(po);
if((ret = PortObjectAddItem(podst, poi, errflag)) != 0)
/* Dup the Item List */
if( po->item_list )
{
- for(poi =(PortObjectItem*)sflist_firstpos(po->item_list,&lpos);
+ for(poi =(PortObjectItem*)sflist_first(po->item_list,&lpos);
poi != NULL;
- poi =(PortObjectItem*)sflist_nextpos(po->item_list,&lpos) )
+ poi =(PortObjectItem*)sflist_next(&lpos) )
{
poinew = PortObjectItemDup( poi );
if(!poinew)
/* Dup the input rule list */
if( po->rule_list )
{
- for(prid = (int*)sflist_firstpos(po->rule_list,&lpos);
+ for(prid = (int*)sflist_first(po->rule_list,&lpos);
prid != 0;
- prid = (int*)sflist_nextpos(po->rule_list,&lpos) )
+ prid = (int*)sflist_next(&lpos) )
{
prule = (int*)calloc(1,sizeof(int));
if(!prule)
/* Dup the Item List */
if( po->item_list )
{
- for(poi =(PortObjectItem*)sflist_firstpos(po->item_list,&lpos);
+ for(poi =(PortObjectItem*)sflist_first(po->item_list,&lpos);
poi != NULL;
- poi =(PortObjectItem*)sflist_nextpos(po->item_list,&lpos) )
+ poi =(PortObjectItem*)sflist_next(&lpos) )
{
poinew = PortObjectItemDup( poi );
if(!poinew)
/* Dup the Item List */
if( po->item_list )
{
- for(poi =(PortObjectItem*)sflist_firstpos(po->item_list,&lpos);
+ for(poi =(PortObjectItem*)sflist_first(po->item_list,&lpos);
poi != NULL;
- poi =(PortObjectItem*)sflist_nextpos(po->item_list,&lpos) )
+ poi =(PortObjectItem*)sflist_next(&lpos) )
{
poinew = PortObjectItemDup( poi );
if(!poinew)
/* Dup the input rule list */
if( po->rule_list )
{
- for(prid = (int*)sflist_firstpos(po->rule_list,&lpos);
+ for(prid = (int*)sflist_first(po->rule_list,&lpos);
prid != 0;
- prid = (int*)sflist_nextpos(po->rule_list,&lpos) )
+ prid = (int*)sflist_next(&lpos) )
{
prule = (int*)calloc(1,sizeof(int));
if(!prule)
int PortObjectHasAny (PortObject * po )
{
PortObjectItem *poi;
+ SF_LNODE* cursor;
if( !po )
return 0;
- for(poi=(PortObjectItem*)sflist_first(po->item_list);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list, &cursor);
poi != 0;
- poi=(PortObjectItem*)sflist_next(po->item_list) )
+ poi=(PortObjectItem*)sflist_next(&cursor) )
{
if( poi->type == PORT_OBJECT_ANY )
return 1;
int PortObjectHasNot (PortObject * po )
{
PortObjectItem *poi;
+ SF_LNODE* cursor;
if( !po )
return 0;
- for(poi=(PortObjectItem*)sflist_first(po->item_list);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list, &cursor);
poi != 0;
- poi=(PortObjectItem*)sflist_next(po->item_list) )
+ poi=(PortObjectItem*)sflist_next(&cursor) )
{
if ( poi->flags== PORT_OBJECT_NOT_FLAG) return 1;
}
int PortObjectIsPureNot (PortObject * po )
{
PortObjectItem *poi;
+ SF_LNODE* cursor;
int cnt=0;
if( !po )
return 0;
- for(poi=(PortObjectItem*)sflist_first(po->item_list);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list, &cursor);
poi != 0;
- poi=(PortObjectItem*)sflist_next(po->item_list) )
+ poi=(PortObjectItem*)sflist_next(&cursor) )
{
cnt++;
if ( poi->flags != PORT_OBJECT_NOT_FLAG)
int PortObjectHasPort (PortObject * po, int port )
{
PortObjectItem *poi;
+ SF_LNODE* cursor;
if( !po )
return 0;
- for(poi=(PortObjectItem*)sflist_first(po->item_list);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list, &cursor);
poi != 0;
- poi=(PortObjectItem*)sflist_next(po->item_list) )
+ poi=(PortObjectItem*)sflist_next(&cursor) )
{
switch( poi->type )
{
int PortObjectIncludesPort (PortObject * po, int port )
{
PortObjectItem *poi;
+ SF_LNODE* cursor;
if( !po )
return 0;
- for(poi=(PortObjectItem*)sflist_first(po->item_list);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list, &cursor);
poi != 0;
- poi=(PortObjectItem*)sflist_next(po->item_list) )
+ poi=(PortObjectItem*)sflist_next(&cursor) )
{
switch( poi->type )
{
PortObject * po;
SF_LNODE * pos;
- for(po =(PortObject*)sflist_firstpos(p->pt_polist,&pos);
+ for(po =(PortObject*)sflist_first(p->pt_polist,&pos);
po != NULL;
- po =(PortObject*)sflist_nextpos(p->pt_polist,&pos) )
+ po =(PortObject*)sflist_next(&pos) )
{
if( PortObjectHasPort ( po, port ) )
{
int PortObjectPortCount (PortObject * po )
{
PortObjectItem *poi;
+ SF_LNODE* cursor;
int cnt=0;
int nports;
if( !po )
return 0;
- for(poi=(PortObjectItem*)sflist_first(po->item_list);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list, &cursor);
poi != 0;
- poi=(PortObjectItem*)sflist_next(po->item_list) )
+ poi=(PortObjectItem*)sflist_next(&cursor) )
{
switch( poi->type )
{
return 0;
}
- for(poi=(PortObjectItem*)sflist_firstpos(po->item_list,&pos);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list,&pos);
poi != 0;
- poi=(PortObjectItem*)sflist_nextpos(po->item_list,&pos) )
+ poi=(PortObjectItem*)sflist_next(&pos) )
{
/* Add ports that are not NOT'd */
if( poi->flags & PORT_OBJECT_NOT_FLAG )
}
/* Remove any NOT'd ports that may have been added above */
- for(poi=(PortObjectItem*)sflist_firstpos(po->item_list,&pos);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list,&pos);
poi != 0;
- poi=(PortObjectItem*)sflist_nextpos(po->item_list,&pos) )
+ poi=(PortObjectItem*)sflist_next(&pos) )
{
if( !( poi->flags & PORT_OBJECT_NOT_FLAG) )
continue;
}
/* disable the NOT'd ports */
- for(poi=(PortObjectItem*)sflist_firstpos(po->item_list,&pos);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list,&pos);
poi != 0;
- poi=(PortObjectItem*)sflist_nextpos(po->item_list,&pos) )
+ poi=(PortObjectItem*)sflist_next(&pos) )
{
if( !( poi->flags & PORT_OBJECT_NOT_FLAG) )
continue; /* should not happen */
if( a->item_list->count != b->item_list->count )
return 0;
- pa = (PortObjectItem*)sflist_firstpos(a->item_list,&posa);
- pb = (PortObjectItem*)sflist_firstpos(b->item_list,&posb);
+ pa = (PortObjectItem*)sflist_first(a->item_list,&posa);
+ pb = (PortObjectItem*)sflist_first(b->item_list,&posb);
while( pa && pb )
{
if( !PortObjectItemsEqual( pa, pb) )
return 0;
- pa = (PortObjectItem*)sflist_nextpos(a->item_list,&posa);
- pb = (PortObjectItem*)sflist_nextpos(b->item_list,&posb);
+ pa = (PortObjectItem*)sflist_next(&posa);
+ pb = (PortObjectItem*)sflist_next(&posb);
}
if( pa || pb ) /* both are not done - cannot match */
{
PortObjectItem * poia;
PortObjectItem * poib;
+ SF_LNODE* cursor;
- for( poib = (PortObjectItem*) sflist_first(pob->item_list);
+ for( poib = (PortObjectItem*) sflist_first(pob->item_list, &cursor);
poib!= 0;
- poib = (PortObjectItem*)sflist_next(pob->item_list) )
+ poib = (PortObjectItem*)sflist_next(&cursor) )
{
poia = PortObjectItemNew();
int * prid2;
SF_LNODE * lpos;
- for( prid = (int*) sflist_firstpos(pob->rule_list,&lpos);
+ for( prid = (int*) sflist_first(pob->rule_list,&lpos);
prid!= 0;
- prid = (int*)sflist_nextpos(pob->rule_list,&lpos) )
+ prid = (int*)sflist_next(&lpos) )
{
prid2 = (int*)calloc( 1, sizeof(int));
if( !prid2 )
int * prid2;
SF_LNODE * lpos;
- for( prid = (int*) sflist_firstpos(pob->rule_list,&lpos);
+ for( prid = (int*) sflist_first(pob->rule_list,&lpos);
prid!= 0;
- prid = (int*)sflist_nextpos(pob->rule_list,&lpos) )
+ prid = (int*)sflist_next(&lpos) )
{
prid2 = (int*)calloc( 1, sizeof(int));
if( !prid2 )
if( !po_name ) return NULL;
/* Normalize each of the input port objects */
- for(po =(PortObject*)sflist_firstpos(pt->pt_polist,&lpos);
+ for(po =(PortObject*)sflist_first(pt->pt_polist,&lpos);
po!=0;
- po =(PortObject*)sflist_nextpos(pt->pt_polist,&lpos) )
+ po =(PortObject*)sflist_next(&lpos) )
{
if( po->name )
{
if( !pt ) return NULL;
if( !pox ) return NULL;
- for(po =(PortObject*)sflist_firstpos(pt->pt_polist,&lpos);
+ for(po =(PortObject*)sflist_first(pt->pt_polist,&lpos);
po!=0;
- po =(PortObject*)sflist_nextpos(pt->pt_polist,&lpos) )
+ po =(PortObject*)sflist_next(&lpos) )
{
if( PortObjectEqual( po, pox ) )
{
PortObject * po;
/* Normalize each of the input port objects */
- for(po =(PortObject*)sflist_firstpos(p->pt_polist,&lpos);
+ for(po =(PortObject*)sflist_first(p->pt_polist,&lpos);
po!=0;
- po =(PortObject*)sflist_nextpos(p->pt_polist,&lpos) )
+ po =(PortObject*)sflist_next(&lpos) )
{
PortObjectNormalize(po);
}
/* Search for the Port Object in the input list, by address */
- for(pox =(PortObject*)sflist_firstpos(p->pt_polist,&lpos);
+ for(pox =(PortObject*)sflist_first(p->pt_polist,&lpos);
pox!=0;
- pox =(PortObject*)sflist_nextpos(p->pt_polist,&lpos) )
+ pox =(PortObject*)sflist_next(&lpos) )
{
if( pox == po )
{
po = *(PortObject**) d;
/* hash up each item */
- for(poi =(PortObjectItem*)sflist_firstpos(po->item_list,&pos);
+ for(poi =(PortObjectItem*)sflist_first(po->item_list,&pos);
poi != NULL;
- poi =(PortObjectItem*)sflist_nextpos(po->item_list,&pos) )
+ poi =(PortObjectItem*)sflist_next(&pos) )
{
switch(poi->type)
{
/* Build a list of port objects touching port 'i' */
pol_cnt = 0;
- for(po=(PortObject*)sflist_firstpos(p->pt_polist,&lpos);
+ for(po=(PortObject*)sflist_first(p->pt_polist,&lpos);
po;
- po=(PortObject*)sflist_nextpos(p->pt_polist,&lpos) )
+ po=(PortObject*)sflist_next(&lpos) )
{
if( PortObjectHasPort ( po, i ) )
{
SF_LNODE * rpos;
/* get each rule in po */
- for(pid=(int*)sflist_firstpos(po->rule_list,&rpos);
+ for(pid=(int*)sflist_first(po->rule_list,&rpos);
pid;
- pid=(int*)sflist_nextpos(po->rule_list,&rpos) )
+ pid=(int*)sflist_next(&rpos) )
{
/* find it in po2 */
id =(int*) sfghash_find(po2->rule_hash,pid);
* check that each port it reference has all of the rules
* referenced to that port in the composit object
*/
- for(ipo=(PortObject*)sflist_firstpos(p->pt_polist,&pos);
+ for(ipo=(PortObject*)sflist_first(p->pt_polist,&pos);
ipo;
- ipo=(PortObject*)sflist_nextpos(p->pt_polist,&pos) )
+ ipo=(PortObject*)sflist_next(&pos) )
{
/*
* for each port in this object get the composite port object
* are in the composite object. This verifies all rules are applied
* to the originally intended port.
*/
- for(poi=(PortObjectItem*)sflist_firstpos(ipo->item_list,&ipos);
+ for(poi=(PortObjectItem*)sflist_first(ipo->item_list,&ipos);
poi;
- poi=(PortObjectItem*)sflist_nextpos(ipo->item_list,&ipos) )
+ poi=(PortObjectItem*)sflist_next(&ipos) )
{
switch(poi->type)
{
ra = (int *)SnortAlloc(rl->count * sizeof(int));
- for( prid = (int*)sflist_firstpos(rl,&pos);
+ for( prid = (int*)sflist_first(rl,&pos);
prid!= 0 && k < (int)rl->count;
- prid = (int*)sflist_nextpos(rl,&pos) )
+ prid = (int*)sflist_next(&pos) )
{
ra[k++] = *prid;
}
return ;
}
- currNode = (int*)sflist_firstpos(rl,&pos);
+ currNode = (int*)sflist_first(rl,&pos);
if (currNode == NULL)
return;
{
*currNode = lastRuleIndex = rlist[i];
//replace the next element in place
- currNode = (int*)sflist_nextpos(rl,&pos);
+ currNode = (int*)sflist_next(&pos);
uniqElements++;
}
}
PortObject * po;
SF_LNODE *pos = NULL;
- for(po =(PortObject*)sflist_firstpos(p->pt_polist,&pos);
+ for(po =(PortObject*)sflist_first(p->pt_polist,&pos);
po != NULL;
- po =(PortObject*)sflist_nextpos(p->pt_polist,&pos) )
+ po =(PortObject*)sflist_next(&pos) )
{
RuleListSortUniq(po->rule_list);
}
SF_LNODE * pos;
LogMessage("*** %d PortObjects in Table\n",p->pt_polist->count);
- for(po =(PortObject*)sflist_firstpos(p->pt_polist,&pos);
+ for(po =(PortObject*)sflist_first(p->pt_polist,&pos);
po!=0;
- po =(PortObject*)sflist_nextpos(p->pt_polist,&pos) )
+ po =(PortObject*)sflist_next(&pos) )
{
PortObjectPrint( po );
}
{
PortObject * po;
SF_LNODE * pos;
- for(po =(PortObject*)sflist_firstpos(p->pt_polist,&pos);
+ for(po =(PortObject*)sflist_first(p->pt_polist,&pos);
po != NULL;
- po =(PortObject*)sflist_nextpos(p->pt_polist,&pos) )
+ po =(PortObject*)sflist_next(&pos) )
{
PortObjectPrintEx( po, print_index_map );
}
SnortSnprintfAppend(buf, bufsize, " [");
- for(poi=(PortObjectItem*)sflist_firstpos(po->item_list, &pos);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list, &pos);
poi != 0;
- poi=(PortObjectItem*)sflist_nextpos(po->item_list, &pos) )
+ poi=(PortObjectItem*)sflist_next(&pos) )
{
PortObjectItemPrint(poi, buf, bufsize);
}
}
else
{
- for(poi=(PortObjectItem*)sflist_firstpos(po->item_list,&pos);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list,&pos);
poi != 0;
- poi=(PortObjectItem*)sflist_nextpos(po->item_list,&pos) )
+ poi=(PortObjectItem*)sflist_next(&pos) )
{
PortObjectItemPrint(poi, po_print_buf, bufsize);
}
}
else
{
- for(poi=(PortObjectItem*)sflist_firstpos(po->item_list,&pos);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list,&pos);
poi != 0;
- poi=(PortObjectItem*)sflist_nextpos(po->item_list,&pos) )
+ poi=(PortObjectItem*)sflist_next(&pos) )
{
PortObjectItemPrint(poi, po_print_buf, bufsize);
}
}
else
{
- for(poi=(PortObjectItem*)sflist_firstpos(po->item_list,&pos);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list,&pos);
poi != 0;
- poi=(PortObjectItem*)sflist_nextpos(po->item_list,&pos) )
+ poi=(PortObjectItem*)sflist_next(&pos) )
{
PortObjectItemPrint(poi, po_print_buf, bufsize);
}
void PortTablePrintUserRules( PortTable * p )
{
PortObject * po;
+ SF_LNODE* cursor;
/* normalized user PortObjects and rule ids */
LogMessage(">>>PortTable - Rules\n");
- for(po = (PortObject*)sflist_first(p->pt_polist);
+ for(po = (PortObject*)sflist_first(p->pt_polist, &cursor);
po!= 0;
- po = (PortObject*)sflist_next(p->pt_polist) )
+ po = (PortObject*)sflist_next(&cursor) )
{
PortObjectPrint( po );
}
continue;
SnortSnprintfAppend(po_print_buf, bufsize, "---Port[%d] PortObjects [ ",i);
+ SF_LNODE* cursor;
- for(po=(PortObject*)sflist_first(p->pt_port_lists[i]);
+ for(po=(PortObject*)sflist_first(p->pt_port_lists[i], &cursor);
po != 0;
- po=(PortObject*)sflist_next(p->pt_port_lists[i]) )
+ po=(PortObject*)sflist_next(&cursor) )
{
SnortSnprintfAppend(po_print_buf, bufsize, "%d ",po->id);
}
if(!po) return;
/* disable the NOT'd ports */
- for(poi=(PortObjectItem*)sflist_firstpos(po->item_list,&pos);
+ for(poi=(PortObjectItem*)sflist_first(po->item_list,&pos);
poi != 0;
- poi=(PortObjectItem*)sflist_nextpos(po->item_list,&pos) )
+ poi=(PortObjectItem*)sflist_next(&pos) )
{
poi->flags ^= PORT_OBJECT_NOT_FLAG;
}