X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fclassifier.h;h=932234503b29246ea1862ca6fecbc23ea6713f1d;hb=8a77bb2ec8d25a61955bbb041cf1e45e8966da76;hp=84cb6028d24262eb0bdee13edd299f0214d110b6;hpb=c23740be661db40a54b8cd0c397945fb3987e771;p=sliver-openvswitch.git diff --git a/lib/classifier.h b/lib/classifier.h index 84cb6028d..932234503 100644 --- a/lib/classifier.h +++ b/lib/classifier.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2009, 2010, 2011, 2012 Nicira Networks. + * Copyright (c) 2009, 2010, 2011, 2012 Nicira, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -87,15 +87,23 @@ void cls_rule_init_catchall(struct cls_rule *, unsigned int priority); void cls_rule_zero_wildcarded_fields(struct cls_rule *); +bool cls_rule_is_loose_match(const struct cls_rule *rule, + const struct cls_rule *criteria); + void cls_rule_set_reg(struct cls_rule *, unsigned int reg_idx, uint32_t value); void cls_rule_set_reg_masked(struct cls_rule *, unsigned int reg_idx, uint32_t value, uint32_t mask); +void cls_rule_set_metadata(struct cls_rule *, ovs_be64 metadata); +void cls_rule_set_metadata_masked(struct cls_rule *, ovs_be64 metadata, + ovs_be64 mask); void cls_rule_set_tun_id(struct cls_rule *, ovs_be64 tun_id); void cls_rule_set_tun_id_masked(struct cls_rule *, ovs_be64 tun_id, ovs_be64 mask); void cls_rule_set_in_port(struct cls_rule *, uint16_t ofp_port); void cls_rule_set_dl_type(struct cls_rule *, ovs_be16); void cls_rule_set_dl_src(struct cls_rule *, const uint8_t[6]); +void cls_rule_set_dl_src_masked(struct cls_rule *, const uint8_t dl_src[6], + const uint8_t mask[6]); void cls_rule_set_dl_dst(struct cls_rule *, const uint8_t[6]); void cls_rule_set_dl_dst_masked(struct cls_rule *, const uint8_t dl_dst[6], const uint8_t mask[6]); @@ -104,6 +112,9 @@ void cls_rule_set_dl_tci_masked(struct cls_rule *, ovs_be16 tci, ovs_be16 mask); void cls_rule_set_any_vid(struct cls_rule *); void cls_rule_set_dl_vlan(struct cls_rule *, ovs_be16); +void cls_rule_set_vlan_vid(struct cls_rule *, ovs_be16); +void cls_rule_set_vlan_vid_masked(struct cls_rule *, + ovs_be16 vid, ovs_be16 mask); void cls_rule_set_any_pcp(struct cls_rule *); void cls_rule_set_dl_vlan_pcp(struct cls_rule *, uint8_t); void cls_rule_set_tp_src(struct cls_rule *, ovs_be16); @@ -126,7 +137,11 @@ void cls_rule_set_nw_frag_masked(struct cls_rule *, void cls_rule_set_icmp_type(struct cls_rule *, uint8_t); void cls_rule_set_icmp_code(struct cls_rule *, uint8_t); void cls_rule_set_arp_sha(struct cls_rule *, const uint8_t[6]); +void cls_rule_set_arp_sha_masked(struct cls_rule *, const uint8_t[6], + const uint8_t [6]); void cls_rule_set_arp_tha(struct cls_rule *, const uint8_t[6]); +void cls_rule_set_arp_tha_masked(struct cls_rule *, const uint8_t[6], + const uint8_t [6]); void cls_rule_set_ipv6_src(struct cls_rule *, const struct in6_addr *); void cls_rule_set_ipv6_src_masked(struct cls_rule *, const struct in6_addr *, const struct in6_addr *); @@ -134,7 +149,10 @@ void cls_rule_set_ipv6_dst(struct cls_rule *, const struct in6_addr *); void cls_rule_set_ipv6_dst_masked(struct cls_rule *, const struct in6_addr *, const struct in6_addr *); void cls_rule_set_ipv6_label(struct cls_rule *, ovs_be32); +void cls_rule_set_ipv6_label_masked(struct cls_rule *, ovs_be32, ovs_be32); void cls_rule_set_nd_target(struct cls_rule *, const struct in6_addr *); +void cls_rule_set_nd_target_masked(struct cls_rule *, const struct in6_addr *, + const struct in6_addr *); bool cls_rule_equal(const struct cls_rule *, const struct cls_rule *); uint32_t cls_rule_hash(const struct cls_rule *, uint32_t basis);