Lines Matching refs:super
1534 exclude_supersets(struct pf_rule *super, struct pf_rule *sub)
1536 if (super->ifname[0] == '\0')
1538 if (super->direction == PF_INOUT)
1540 if ((super->proto == 0 || super->proto == sub->proto) &&
1541 super->flags == 0 && super->flagset == 0 && (sub->flags ||
1543 sub->flags = super->flags;
1544 sub->flagset = super->flagset;
1546 if (super->proto == 0)
1549 if (super->src.port_op == 0) {
1554 if (super->dst.port_op == 0) {
1560 if (super->src.addr.type == PF_ADDR_ADDRMASK && !super->src.neg &&
1561 !sub->src.neg && super->src.addr.v.a.mask.addr32[0] == 0 &&
1562 super->src.addr.v.a.mask.addr32[1] == 0 &&
1563 super->src.addr.v.a.mask.addr32[2] == 0 &&
1564 super->src.addr.v.a.mask.addr32[3] == 0)
1566 else if (super->src.addr.type == PF_ADDR_ADDRMASK &&
1568 super->src.neg == sub->src.neg &&
1569 super->af == sub->af &&
1570 unmask(&super->src.addr.v.a.mask, super->af) <
1572 super->src.addr.v.a.addr.addr32[0] ==
1574 super->src.addr.v.a.mask.addr32[0]) &&
1575 super->src.addr.v.a.addr.addr32[1] ==
1577 super->src.addr.v.a.mask.addr32[1]) &&
1578 super->src.addr.v.a.addr.addr32[2] ==
1580 super->src.addr.v.a.mask.addr32[2]) &&
1581 super->src.addr.v.a.addr.addr32[3] ==
1583 super->src.addr.v.a.mask.addr32[3])) {
1584 /* sub->src.addr is a subset of super->src.addr/mask */
1585 memcpy(&sub->src.addr, &super->src.addr, sizeof(sub->src.addr));
1588 if (super->dst.addr.type == PF_ADDR_ADDRMASK && !super->dst.neg &&
1589 !sub->dst.neg && super->dst.addr.v.a.mask.addr32[0] == 0 &&
1590 super->dst.addr.v.a.mask.addr32[1] == 0 &&
1591 super->dst.addr.v.a.mask.addr32[2] == 0 &&
1592 super->dst.addr.v.a.mask.addr32[3] == 0)
1594 else if (super->dst.addr.type == PF_ADDR_ADDRMASK &&
1596 super->dst.neg == sub->dst.neg &&
1597 super->af == sub->af &&
1598 unmask(&super->dst.addr.v.a.mask, super->af) <
1600 super->dst.addr.v.a.addr.addr32[0] ==
1602 super->dst.addr.v.a.mask.addr32[0]) &&
1603 super->dst.addr.v.a.addr.addr32[1] ==
1605 super->dst.addr.v.a.mask.addr32[1]) &&
1606 super->dst.addr.v.a.addr.addr32[2] ==
1608 super->dst.addr.v.a.mask.addr32[2]) &&
1609 super->dst.addr.v.a.addr.addr32[3] ==
1611 super->dst.addr.v.a.mask.addr32[3])) {
1612 /* sub->dst.addr is a subset of super->dst.addr/mask */
1613 memcpy(&sub->dst.addr, &super->dst.addr, sizeof(sub->dst.addr));
1616 if (super->af == 0)