if (errflag)
*errflag = 0;
- for (po=(PortObjectItem*)sflist_first(posrc->item_list, &pos);
+ for (po = (PortObjectItem*)sflist_first(posrc->item_list, &pos);
po != nullptr;
- po=(PortObjectItem*)sflist_next(&pos) )
+ po = (PortObjectItem*)sflist_next(&pos))
{
PortObjectItem* poi = PortObjectItemDup(po);
if ((ret = PortObjectAddItem(podst, poi, errflag)) != 0)
{
for (PortObjectItem* poi = (PortObjectItem*)sflist_first(po->item_list, &lpos);
poi != nullptr;
- poi = (PortObjectItem*)sflist_next(&lpos) )
+ poi = (PortObjectItem*)sflist_next(&lpos))
{
PortObjectItem* poinew = PortObjectItemDup(poi);
PortObjectAddItem(ponew, poinew, nullptr);
{
for (int* prid = (int*)sflist_first(po->rule_list, &lpos);
prid != nullptr;
- prid = (int*)sflist_next(&lpos) )
+ prid = (int*)sflist_next(&lpos))
{
int* prule = (int*)snort_calloc(sizeof(int));
*prule = *prid;
if ( !po )
return 0;
- for (PortObjectItem* poi=(PortObjectItem*)sflist_first(po->item_list, &cursor);
+ for (PortObjectItem* poi = (PortObjectItem*)sflist_first(po->item_list, &cursor);
poi != nullptr;
- poi=(PortObjectItem*)sflist_next(&cursor) )
+ poi = (PortObjectItem*)sflist_next(&cursor))
{
if ( poi->any() )
return -1;
if ( !po )
return 0;
- for (poi=(PortObjectItem*)sflist_first(po->item_list, &cursor);
+ for (poi = (PortObjectItem*)sflist_first(po->item_list, &cursor);
poi != nullptr;
- poi=(PortObjectItem*)sflist_next(&cursor) )
+ poi = (PortObjectItem*)sflist_next(&cursor))
{
if ( poi->any() )
return 0;
if (!po)
return;
- for (poi=(PortObjectItem*)sflist_first(po->item_list,&pos);
+ for (poi = (PortObjectItem*)sflist_first(po->item_list,&pos);
poi != nullptr;
- poi=(PortObjectItem*)sflist_next(&pos) )
+ poi = (PortObjectItem*)sflist_next(&pos))
{
poi->negate = !poi->negate;
}
if ( !po )
return 0;
- for (poi=(PortObjectItem*)sflist_first(po->item_list, &cursor);
+ for (poi = (PortObjectItem*)sflist_first(po->item_list, &cursor);
poi != nullptr;
- poi=(PortObjectItem*)sflist_next(&cursor) )
+ poi = (PortObjectItem*)sflist_next(&cursor))
{
cnt++;
if ( !poi->negate )
if ( !po )
return 0;
- for (poi=(PortObjectItem*)sflist_first(po->item_list, &cursor);
+ for (poi = (PortObjectItem*)sflist_first(po->item_list, &cursor);
poi != nullptr;
- poi=(PortObjectItem*)sflist_next(&cursor) )
+ poi = (PortObjectItem*)sflist_next(&cursor))
{
if ( poi->any() )
return 1;
SF_LNODE* cursor;
for (PortObjectItem* poib = (PortObjectItem*)sflist_first(pob->item_list, &cursor);
- poib!= nullptr;
- poib = (PortObjectItem*)sflist_next(&cursor) )
+ poib != nullptr;
+ poib = (PortObjectItem*)sflist_next(&cursor))
{
PortObjectItem* poia = PortObjectItemNew();
buf = (char*)snort_calloc(bufsize);
SnortSnprintfAppend(buf, bufsize, " [");
- for (poi=(PortObjectItem*)sflist_first(po->item_list, &pos);
+ for (poi = (PortObjectItem*)sflist_first(po->item_list, &pos);
poi != nullptr;
- poi=(PortObjectItem*)sflist_next(&pos) )
+ poi = (PortObjectItem*)sflist_next(&pos))
{
PortObjectItemPrint(poi, buf, bufsize);
}
{
for (poi = (PortObjectItem*)sflist_first(po->item_list,&pos);
poi != nullptr;
- poi = (PortObjectItem*)sflist_next(&pos) )
+ poi = (PortObjectItem*)sflist_next(&pos))
{
PortObjectItemPrint(poi, print_buf, bufsize);
}
snort_free(rlist);
}
+unsigned PortObjectHash(const PortObject* po, unsigned hash, unsigned scale, unsigned hardener)
+{
+#ifndef DEBUG
+ if (po->hash != 0)
+ return po->hash;
+#endif
+
+ SF_LNODE* pos;
+
+ for (PortObjectItem* poi = (PortObjectItem*)sflist_first(po->item_list, &pos);
+ poi != nullptr;
+ poi = (PortObjectItem*)sflist_next(&pos))
+ {
+ hash = PortObjectItemHash(poi, hash, scale);
+ }
+
+ assert(po->hash == 0 or po->hash == (hash ^ hardener));
+ po->hash = hash ^ hardener;
+
+ return po->hash;
+}
unsigned do_hash(const unsigned char* k, int) override
{
- unsigned hash = seed;
const PortObject* po = *(PortObject* const*)k;
- SF_LNODE* pos;
-
- for (PortObjectItem* poi = (PortObjectItem*)sflist_first(po->item_list, &pos);
- poi != nullptr;
- poi = (PortObjectItem*)sflist_next(&pos) )
- {
- if ( poi->any() )
- continue;
-
- hash *= scale;
- hash += poi->lport & 0xff;
- hash *= scale;
- hash += (poi->lport >> 8) & 0xff;
-
- hash *= scale;
- hash += poi->hport & 0xff;
- hash *= scale;
- hash += (poi->hport >> 8) & 0xff;
- }
- return hash ^ hardener;
+ return PortObjectHash(po, seed, scale, hardener);
}
bool key_compare(const void* k1, const void* k2, size_t) override
RuleListSortUniq(po->rule_list);
}
}
-