Sho SHIMIZU
Committed by Gerrit Code Review

Pull out inner-classes from Criteria to be independent classes

Make constructors of sub-types of Criterion package private for
limiting instantiation only from static factory methods in Criteria

Change-Id: I1fb1e9d003288a778a49e758549a92b66bf3cfdf
Showing 34 changed files with 2179 additions and 1614 deletions
...@@ -31,7 +31,7 @@ import org.onosproject.net.Host; ...@@ -31,7 +31,7 @@ import org.onosproject.net.Host;
31 import org.onosproject.net.device.DeviceService; 31 import org.onosproject.net.device.DeviceService;
32 import org.onosproject.net.flow.FlowRule; 32 import org.onosproject.net.flow.FlowRule;
33 import org.onosproject.net.flow.FlowRuleService; 33 import org.onosproject.net.flow.FlowRuleService;
34 -import org.onosproject.net.flow.criteria.Criteria.EthCriterion; 34 +import org.onosproject.net.flow.criteria.EthCriterion;
35 import org.onosproject.net.flow.criteria.Criterion; 35 import org.onosproject.net.flow.criteria.Criterion;
36 import org.onosproject.net.flow.criteria.Criterion.Type; 36 import org.onosproject.net.flow.criteria.Criterion.Type;
37 import org.onosproject.net.host.HostEvent; 37 import org.onosproject.net.host.HostEvent;
......
...@@ -40,7 +40,7 @@ import org.onosproject.net.flow.DefaultTrafficSelector; ...@@ -40,7 +40,7 @@ import org.onosproject.net.flow.DefaultTrafficSelector;
40 import org.onosproject.net.flow.DefaultTrafficTreatment; 40 import org.onosproject.net.flow.DefaultTrafficTreatment;
41 import org.onosproject.net.flow.TrafficSelector; 41 import org.onosproject.net.flow.TrafficSelector;
42 import org.onosproject.net.flow.TrafficTreatment; 42 import org.onosproject.net.flow.TrafficTreatment;
43 -import org.onosproject.net.flow.criteria.Criteria.IPCriterion; 43 +import org.onosproject.net.flow.criteria.IPCriterion;
44 import org.onosproject.net.flow.criteria.Criterion; 44 import org.onosproject.net.flow.criteria.Criterion;
45 import org.onosproject.net.host.HostService; 45 import org.onosproject.net.host.HostService;
46 import org.onosproject.net.intent.Intent; 46 import org.onosproject.net.intent.Intent;
......
...@@ -15,10 +15,6 @@ ...@@ -15,10 +15,6 @@
15 */ 15 */
16 package org.onosproject.net.flow.criteria; 16 package org.onosproject.net.flow.criteria;
17 17
18 -import static com.google.common.base.MoreObjects.toStringHelper;
19 -
20 -import java.util.Objects;
21 -
22 import org.onosproject.net.PortNumber; 18 import org.onosproject.net.PortNumber;
23 import org.onosproject.net.flow.criteria.Criterion.Type; 19 import org.onosproject.net.flow.criteria.Criterion.Type;
24 import org.onlab.packet.IpPrefix; 20 import org.onlab.packet.IpPrefix;
...@@ -380,1361 +376,6 @@ public final class Criteria { ...@@ -380,1361 +376,6 @@ public final class Criteria {
380 } 376 }
381 377
382 /** 378 /**
383 - * Implementation of input port criterion.
384 - */
385 - public static final class PortCriterion implements Criterion {
386 - private final PortNumber port;
387 - private final Type type;
388 -
389 - /**
390 - * Constructor.
391 - *
392 - * @param port the input port number to match
393 - * @param type the match type. Should be either Type.IN_PORT or
394 - * Type.IN_PHY_PORT
395 - */
396 - public PortCriterion(PortNumber port, Type type) {
397 - this.port = port;
398 - this.type = type;
399 - }
400 -
401 - @Override
402 - public Type type() {
403 - return this.type;
404 - }
405 -
406 - /**
407 - * Gets the input port number to match.
408 - *
409 - * @return the input port number to match
410 - */
411 - public PortNumber port() {
412 - return this.port;
413 - }
414 -
415 - @Override
416 - public String toString() {
417 - return toStringHelper(type().toString())
418 - .add("port", port).toString();
419 - }
420 -
421 - @Override
422 - public int hashCode() {
423 - return Objects.hash(type(), port);
424 - }
425 -
426 - @Override
427 - public boolean equals(Object obj) {
428 - if (this == obj) {
429 - return true;
430 - }
431 - if (obj instanceof PortCriterion) {
432 - PortCriterion that = (PortCriterion) obj;
433 - return Objects.equals(port, that.port) &&
434 - Objects.equals(this.type(), that.type());
435 - }
436 - return false;
437 - }
438 - }
439 -
440 - /**
441 - * Implementation of Metadata criterion.
442 - */
443 - public static final class MetadataCriterion implements Criterion {
444 - private final long metadata;
445 -
446 - /**
447 - * Constructor.
448 - *
449 - * @param metadata the metadata to match (64 bits data)
450 - */
451 - public MetadataCriterion(long metadata) {
452 - this.metadata = metadata;
453 - }
454 -
455 - @Override
456 - public Type type() {
457 - return Type.METADATA;
458 - }
459 -
460 - /**
461 - * Gets the metadata to match.
462 - *
463 - * @return the metadata to match (64 bits data)
464 - */
465 - public long metadata() {
466 - return metadata;
467 - }
468 -
469 - @Override
470 - public String toString() {
471 - return toStringHelper(type().toString())
472 - .add("metadata", Long.toHexString(metadata))
473 - .toString();
474 - }
475 -
476 - @Override
477 - public int hashCode() {
478 - return Objects.hash(type(), metadata);
479 - }
480 -
481 - @Override
482 - public boolean equals(Object obj) {
483 - if (this == obj) {
484 - return true;
485 - }
486 - if (obj instanceof MetadataCriterion) {
487 - MetadataCriterion that = (MetadataCriterion) obj;
488 - return Objects.equals(metadata, that.metadata) &&
489 - Objects.equals(this.type(), that.type());
490 - }
491 - return false;
492 - }
493 - }
494 -
495 - /**
496 - * Implementation of MAC address criterion.
497 - */
498 - public static final class EthCriterion implements Criterion {
499 - private final MacAddress mac;
500 - private final Type type;
501 -
502 - /**
503 - * Constructor.
504 - *
505 - * @param mac the source or destination MAC address to match
506 - * @param type the match type. Should be either Type.ETH_DST or
507 - * Type.ETH_SRC
508 - */
509 - public EthCriterion(MacAddress mac, Type type) {
510 - this.mac = mac;
511 - this.type = type;
512 - }
513 -
514 - @Override
515 - public Type type() {
516 - return this.type;
517 - }
518 -
519 - /**
520 - * Gets the MAC address to match.
521 - *
522 - * @return the MAC address to match
523 - */
524 - public MacAddress mac() {
525 - return this.mac;
526 - }
527 -
528 - @Override
529 - public String toString() {
530 - return toStringHelper(type().toString())
531 - .add("mac", mac).toString();
532 - }
533 -
534 - @Override
535 - public int hashCode() {
536 - return Objects.hash(type, mac);
537 - }
538 -
539 - @Override
540 - public boolean equals(Object obj) {
541 - if (this == obj) {
542 - return true;
543 - }
544 - if (obj instanceof EthCriterion) {
545 - EthCriterion that = (EthCriterion) obj;
546 - return Objects.equals(mac, that.mac) &&
547 - Objects.equals(type, that.type);
548 - }
549 - return false;
550 - }
551 - }
552 -
553 - /**
554 - * Implementation of Ethernet type criterion (16 bits unsigned integer).
555 - */
556 - public static final class EthTypeCriterion implements Criterion {
557 - private static final int MASK = 0xffff;
558 - private final int ethType; // Ethernet type value: 16 bits
559 -
560 - /**
561 - * Constructor.
562 - *
563 - * @param ethType the Ethernet frame type to match (16 bits unsigned
564 - * integer)
565 - */
566 - public EthTypeCriterion(int ethType) {
567 - this.ethType = ethType & MASK;
568 - }
569 -
570 - @Override
571 - public Type type() {
572 - return Type.ETH_TYPE;
573 - }
574 -
575 - /**
576 - * Gets the Ethernet frame type to match.
577 - *
578 - * @return the Ethernet frame type to match (16 bits unsigned integer)
579 - */
580 - public int ethType() {
581 - return ethType;
582 - }
583 -
584 - @Override
585 - public String toString() {
586 - return toStringHelper(type().toString())
587 - .add("ethType", Long.toHexString(ethType))
588 - .toString();
589 - }
590 -
591 - @Override
592 - public int hashCode() {
593 - return Objects.hash(type(), ethType);
594 - }
595 -
596 - @Override
597 - public boolean equals(Object obj) {
598 - if (this == obj) {
599 - return true;
600 - }
601 - if (obj instanceof EthTypeCriterion) {
602 - EthTypeCriterion that = (EthTypeCriterion) obj;
603 - return Objects.equals(ethType, that.ethType) &&
604 - Objects.equals(this.type(), that.type());
605 - }
606 - return false;
607 - }
608 - }
609 -
610 - /**
611 - * Implementation of VLAN ID criterion.
612 - */
613 - public static final class VlanIdCriterion implements Criterion {
614 - private final VlanId vlanId;
615 -
616 - /**
617 - * Constructor.
618 - *
619 - * @param vlanId the VLAN ID to match
620 - */
621 - public VlanIdCriterion(VlanId vlanId) {
622 - this.vlanId = vlanId;
623 - }
624 -
625 - @Override
626 - public Type type() {
627 - return Type.VLAN_VID;
628 - }
629 -
630 - /**
631 - * Gets the VLAN ID to match.
632 - *
633 - * @return the VLAN ID to match
634 - */
635 - public VlanId vlanId() {
636 - return vlanId;
637 - }
638 -
639 - @Override
640 - public String toString() {
641 - return toStringHelper(type().toString())
642 - .add("vlanId", vlanId).toString();
643 - }
644 -
645 - @Override
646 - public int hashCode() {
647 - return Objects.hash(type(), vlanId);
648 - }
649 -
650 - @Override
651 - public boolean equals(Object obj) {
652 - if (this == obj) {
653 - return true;
654 - }
655 - if (obj instanceof VlanIdCriterion) {
656 - VlanIdCriterion that = (VlanIdCriterion) obj;
657 - return Objects.equals(vlanId, that.vlanId) &&
658 - Objects.equals(this.type(), that.type());
659 - }
660 - return false;
661 - }
662 - }
663 -
664 - /**
665 - * Implementation of VLAN priority criterion (3 bits).
666 - */
667 - public static final class VlanPcpCriterion implements Criterion {
668 - private static final byte MASK = 0x7;
669 - private final byte vlanPcp; // VLAN pcp value: 3 bits
670 -
671 - /**
672 - * Constructor.
673 - *
674 - * @param vlanPcp the VLAN priority to match (3 bits)
675 - */
676 - public VlanPcpCriterion(byte vlanPcp) {
677 - this.vlanPcp = (byte) (vlanPcp & MASK);
678 - }
679 -
680 - @Override
681 - public Type type() {
682 - return Type.VLAN_PCP;
683 - }
684 -
685 - /**
686 - * Gets the VLAN priority to match.
687 - *
688 - * @return the VLAN priority to match (3 bits)
689 - */
690 - public byte priority() {
691 - return vlanPcp;
692 - }
693 -
694 - @Override
695 - public String toString() {
696 - return toStringHelper(type().toString())
697 - .add("priority", Long.toHexString(vlanPcp)).toString();
698 - }
699 -
700 - @Override
701 - public int hashCode() {
702 - return Objects.hash(type(), vlanPcp);
703 - }
704 -
705 - @Override
706 - public boolean equals(Object obj) {
707 - if (this == obj) {
708 - return true;
709 - }
710 - if (obj instanceof VlanPcpCriterion) {
711 - VlanPcpCriterion that = (VlanPcpCriterion) obj;
712 - return Objects.equals(vlanPcp, that.vlanPcp) &&
713 - Objects.equals(this.type(), that.type());
714 - }
715 - return false;
716 - }
717 - }
718 -
719 - /**
720 - * Implementation of IP DSCP (Differentiated Services Code Point)
721 - * criterion (6 bits).
722 - */
723 - public static final class IPDscpCriterion implements Criterion {
724 - private static final byte MASK = 0x3f;
725 - private final byte ipDscp; // IP DSCP value: 6 bits
726 -
727 - /**
728 - * Constructor.
729 - *
730 - * @param ipDscp the IP DSCP value to match
731 - */
732 - public IPDscpCriterion(byte ipDscp) {
733 - this.ipDscp = (byte) (ipDscp & MASK);
734 - }
735 -
736 - @Override
737 - public Type type() {
738 - return Type.IP_DSCP;
739 - }
740 -
741 - /**
742 - * Gets the IP DSCP value to match.
743 - *
744 - * @return the IP DSCP value to match
745 - */
746 - public byte ipDscp() {
747 - return ipDscp;
748 - }
749 -
750 - @Override
751 - public String toString() {
752 - return toStringHelper(type().toString())
753 - .add("ipDscp", Long.toHexString(ipDscp)).toString();
754 - }
755 -
756 - @Override
757 - public int hashCode() {
758 - return Objects.hash(type(), ipDscp);
759 - }
760 -
761 - @Override
762 - public boolean equals(Object obj) {
763 - if (this == obj) {
764 - return true;
765 - }
766 - if (obj instanceof IPDscpCriterion) {
767 - IPDscpCriterion that = (IPDscpCriterion) obj;
768 - return Objects.equals(ipDscp, that.ipDscp) &&
769 - Objects.equals(this.type(), that.type());
770 - }
771 - return false;
772 - }
773 - }
774 -
775 - /**
776 - * Implementation of IP ECN (Explicit Congestion Notification) criterion
777 - * (2 bits).
778 - */
779 - public static final class IPEcnCriterion implements Criterion {
780 - private static final byte MASK = 0x3;
781 - private final byte ipEcn; // IP ECN value: 2 bits
782 -
783 - /**
784 - * Constructor.
785 - *
786 - * @param ipEcn the IP ECN value to match (2 bits)
787 - */
788 - public IPEcnCriterion(byte ipEcn) {
789 - this.ipEcn = (byte) (ipEcn & MASK);
790 - }
791 -
792 - @Override
793 - public Type type() {
794 - return Type.IP_ECN;
795 - }
796 -
797 - /**
798 - * Gets the IP ECN value to match.
799 - *
800 - * @return the IP ECN value to match (2 bits)
801 - */
802 - public byte ipEcn() {
803 - return ipEcn;
804 - }
805 -
806 - @Override
807 - public String toString() {
808 - return toStringHelper(type().toString())
809 - .add("ipEcn", Long.toHexString(ipEcn)).toString();
810 - }
811 -
812 - @Override
813 - public int hashCode() {
814 - return Objects.hash(type(), ipEcn);
815 - }
816 -
817 - @Override
818 - public boolean equals(Object obj) {
819 - if (this == obj) {
820 - return true;
821 - }
822 - if (obj instanceof IPEcnCriterion) {
823 - IPEcnCriterion that = (IPEcnCriterion) obj;
824 - return Objects.equals(ipEcn, that.ipEcn) &&
825 - Objects.equals(this.type(), that.type());
826 - }
827 - return false;
828 - }
829 - }
830 -
831 - /**
832 - * Implementation of Internet Protocol Number criterion (8 bits unsigned)
833 - * integer.
834 - */
835 - public static final class IPProtocolCriterion implements Criterion {
836 - private static final short MASK = 0xff;
837 - private final short proto; // IP protocol number: 8 bits
838 -
839 - /**
840 - * Constructor.
841 - *
842 - * @param protocol the IP protocol (e.g., TCP=6, UDP=17) to match
843 - * (8 bits unsigned integer)
844 - */
845 - public IPProtocolCriterion(short protocol) {
846 - this.proto = (short) (protocol & MASK);
847 - }
848 -
849 - @Override
850 - public Type type() {
851 - return Type.IP_PROTO;
852 - }
853 -
854 - /**
855 - * Gets the IP protocol to match.
856 - *
857 - * @return the IP protocol to match (8 bits unsigned integer)
858 - */
859 - public short protocol() {
860 - return proto;
861 - }
862 -
863 - @Override
864 - public String toString() {
865 - return toStringHelper(type().toString())
866 - .add("protocol", proto).toString();
867 - }
868 -
869 - @Override
870 - public int hashCode() {
871 - return Objects.hash(type(), proto);
872 - }
873 -
874 - @Override
875 - public boolean equals(Object obj) {
876 - if (this == obj) {
877 - return true;
878 - }
879 - if (obj instanceof IPProtocolCriterion) {
880 - IPProtocolCriterion that = (IPProtocolCriterion) obj;
881 - return Objects.equals(proto, that.proto);
882 - }
883 - return false;
884 - }
885 - }
886 -
887 - /**
888 - * Implementation of IP address criterion.
889 - */
890 - public static final class IPCriterion implements Criterion {
891 - private final IpPrefix ip;
892 - private final Type type;
893 -
894 - /**
895 - * Constructor.
896 - *
897 - * @param ip the IP prefix to match. Could be either IPv4 or IPv6
898 - * @param type the match type. Should be one of the following:
899 - * Type.IPV4_SRC, Type.IPV4_DST, Type.IPV6_SRC, Type.IPV6_DST
900 - */
901 - public IPCriterion(IpPrefix ip, Type type) {
902 - this.ip = ip;
903 - this.type = type;
904 - }
905 -
906 - @Override
907 - public Type type() {
908 - return this.type;
909 - }
910 -
911 - /**
912 - * Gets the IP prefix to match.
913 - *
914 - * @return the IP prefix to match
915 - */
916 - public IpPrefix ip() {
917 - return this.ip;
918 - }
919 -
920 - @Override
921 - public String toString() {
922 - return toStringHelper(type().toString())
923 - .add("ip", ip).toString();
924 - }
925 -
926 - @Override
927 - public int hashCode() {
928 - return Objects.hash(type, ip);
929 - }
930 -
931 - @Override
932 - public boolean equals(Object obj) {
933 - if (this == obj) {
934 - return true;
935 - }
936 - if (obj instanceof IPCriterion) {
937 - IPCriterion that = (IPCriterion) obj;
938 - return Objects.equals(ip, that.ip) &&
939 - Objects.equals(type, that.type);
940 - }
941 - return false;
942 - }
943 - }
944 -
945 - /**
946 - * Implementation of TCP port criterion (16 bits unsigned integer).
947 - */
948 - public static final class TcpPortCriterion implements Criterion {
949 - private static final int MASK = 0xffff;
950 - private final int tcpPort; // Port value: 16 bits
951 - private final Type type;
952 -
953 - /**
954 - * Constructor.
955 - *
956 - * @param tcpPort the TCP port to match (16 bits unsigned integer)
957 - * @param type the match type. Should be either Type.TCP_SRC or
958 - * Type.TCP_DST
959 - */
960 - public TcpPortCriterion(int tcpPort, Type type) {
961 - this.tcpPort = tcpPort & MASK;
962 - this.type = type;
963 - }
964 -
965 - @Override
966 - public Type type() {
967 - return this.type;
968 - }
969 -
970 - /**
971 - * Gets the TCP port to match.
972 - *
973 - * @return the TCP port to match (16 bits unsigned integer)
974 - */
975 - public int tcpPort() {
976 - return this.tcpPort;
977 - }
978 -
979 - @Override
980 - public String toString() {
981 - return toStringHelper(type().toString())
982 - .add("tcpPort", tcpPort).toString();
983 - }
984 -
985 - @Override
986 - public int hashCode() {
987 - return Objects.hash(type, tcpPort);
988 - }
989 -
990 - @Override
991 - public boolean equals(Object obj) {
992 - if (this == obj) {
993 - return true;
994 - }
995 - if (obj instanceof TcpPortCriterion) {
996 - TcpPortCriterion that = (TcpPortCriterion) obj;
997 - return Objects.equals(tcpPort, that.tcpPort) &&
998 - Objects.equals(type, that.type);
999 - }
1000 - return false;
1001 - }
1002 - }
1003 -
1004 - /**
1005 - * Implementation of UDP port criterion (16 bits unsigned integer).
1006 - */
1007 - public static final class UdpPortCriterion implements Criterion {
1008 - private static final int MASK = 0xffff;
1009 - private final int udpPort; // Port value: 16 bits
1010 - private final Type type;
1011 -
1012 - /**
1013 - * Constructor.
1014 - *
1015 - * @param udpPort the UDP port to match (16 bits unsigned integer)
1016 - * @param type the match type. Should be either Type.UDP_SRC or
1017 - * Type.UDP_DST
1018 - */
1019 - public UdpPortCriterion(int udpPort, Type type) {
1020 - this.udpPort = udpPort & MASK;
1021 - this.type = type;
1022 - }
1023 -
1024 - @Override
1025 - public Type type() {
1026 - return this.type;
1027 - }
1028 -
1029 - /**
1030 - * Gets the UDP port to match.
1031 - *
1032 - * @return the UDP port to match (16 bits unsigned integer)
1033 - */
1034 - public int udpPort() {
1035 - return this.udpPort;
1036 - }
1037 -
1038 - @Override
1039 - public String toString() {
1040 - return toStringHelper(type().toString())
1041 - .add("udpPort", udpPort).toString();
1042 - }
1043 -
1044 - @Override
1045 - public int hashCode() {
1046 - return Objects.hash(type, udpPort);
1047 - }
1048 -
1049 - @Override
1050 - public boolean equals(Object obj) {
1051 - if (this == obj) {
1052 - return true;
1053 - }
1054 - if (obj instanceof UdpPortCriterion) {
1055 - UdpPortCriterion that = (UdpPortCriterion) obj;
1056 - return Objects.equals(udpPort, that.udpPort) &&
1057 - Objects.equals(type, that.type);
1058 - }
1059 - return false;
1060 - }
1061 - }
1062 -
1063 - /**
1064 - * Implementation of SCTP port criterion (16 bits unsigned integer).
1065 - */
1066 - public static final class SctpPortCriterion implements Criterion {
1067 - private static final int MASK = 0xffff;
1068 - private final int sctpPort; // Port value: 16 bits
1069 - private final Type type;
1070 -
1071 - /**
1072 - * Constructor.
1073 - *
1074 - * @param sctpPort the SCTP port to match (16 bits unsigned integer)
1075 - * @param type the match type. Should be either Type.SCTP_SRC or
1076 - * Type.SCTP_DST
1077 - */
1078 - public SctpPortCriterion(int sctpPort, Type type) {
1079 - this.sctpPort = sctpPort & MASK;
1080 - this.type = type;
1081 - }
1082 -
1083 - @Override
1084 - public Type type() {
1085 - return this.type;
1086 - }
1087 -
1088 - /**
1089 - * Gets the SCTP port to match.
1090 - *
1091 - * @return the SCTP port to match (16 bits unsigned integer)
1092 - */
1093 - public int sctpPort() {
1094 - return this.sctpPort;
1095 - }
1096 -
1097 - @Override
1098 - public String toString() {
1099 - return toStringHelper(type().toString())
1100 - .add("sctpPort", sctpPort).toString();
1101 - }
1102 -
1103 - @Override
1104 - public int hashCode() {
1105 - return Objects.hash(type, sctpPort);
1106 - }
1107 -
1108 - @Override
1109 - public boolean equals(Object obj) {
1110 - if (this == obj) {
1111 - return true;
1112 - }
1113 - if (obj instanceof SctpPortCriterion) {
1114 - SctpPortCriterion that = (SctpPortCriterion) obj;
1115 - return Objects.equals(sctpPort, that.sctpPort) &&
1116 - Objects.equals(type, that.type);
1117 - }
1118 - return false;
1119 - }
1120 - }
1121 -
1122 - /**
1123 - * Implementation of ICMP type criterion (8 bits unsigned integer).
1124 - */
1125 - public static final class IcmpTypeCriterion implements Criterion {
1126 - private static final short MASK = 0xff;
1127 - private final short icmpType; // The ICMP type: 8 bits
1128 -
1129 - /**
1130 - * Constructor.
1131 - *
1132 - * @param icmpType the ICMP type to match (8 bits unsigned integer)
1133 - */
1134 - public IcmpTypeCriterion(short icmpType) {
1135 - this.icmpType = (short) (icmpType & MASK);
1136 - }
1137 -
1138 - @Override
1139 - public Type type() {
1140 - return Type.ICMPV4_TYPE;
1141 - }
1142 -
1143 - /**
1144 - * Gets the ICMP type to match.
1145 - *
1146 - * @return the ICMP type to match (8 bits unsigned integer)
1147 - */
1148 - public short icmpType() {
1149 - return icmpType;
1150 - }
1151 -
1152 - @Override
1153 - public String toString() {
1154 - return toStringHelper(type().toString())
1155 - .add("icmpType", icmpType).toString();
1156 - }
1157 -
1158 - @Override
1159 - public int hashCode() {
1160 - return Objects.hash(type(), icmpType);
1161 - }
1162 -
1163 - @Override
1164 - public boolean equals(Object obj) {
1165 - if (this == obj) {
1166 - return true;
1167 - }
1168 - if (obj instanceof IcmpTypeCriterion) {
1169 - IcmpTypeCriterion that = (IcmpTypeCriterion) obj;
1170 - return Objects.equals(icmpType, that.icmpType) &&
1171 - Objects.equals(this.type(), that.type());
1172 - }
1173 - return false;
1174 - }
1175 - }
1176 -
1177 - /**
1178 - * Implementation of ICMP code criterion (8 bits unsigned integer).
1179 - */
1180 - public static final class IcmpCodeCriterion implements Criterion {
1181 - private static final short MASK = 0xff;
1182 - private final short icmpCode; // The ICMP code: 8 bits
1183 -
1184 - /**
1185 - * Constructor.
1186 - *
1187 - * @param icmpCode the ICMP code to match (8 bits unsigned integer)
1188 - */
1189 - public IcmpCodeCriterion(short icmpCode) {
1190 - this.icmpCode = (short) (icmpCode & MASK);
1191 - }
1192 -
1193 - @Override
1194 - public Type type() {
1195 - return Type.ICMPV4_CODE;
1196 - }
1197 -
1198 - /**
1199 - * Gets the ICMP code to match.
1200 - *
1201 - * @return the ICMP code to match (8 bits unsigned integer)
1202 - */
1203 - public short icmpCode() {
1204 - return icmpCode;
1205 - }
1206 -
1207 - @Override
1208 - public String toString() {
1209 - return toStringHelper(type().toString())
1210 - .add("icmpCode", icmpCode).toString();
1211 - }
1212 -
1213 - @Override
1214 - public int hashCode() {
1215 - return Objects.hash(type(), icmpCode);
1216 - }
1217 -
1218 - @Override
1219 - public boolean equals(Object obj) {
1220 - if (this == obj) {
1221 - return true;
1222 - }
1223 - if (obj instanceof IcmpCodeCriterion) {
1224 - IcmpCodeCriterion that = (IcmpCodeCriterion) obj;
1225 - return Objects.equals(icmpCode, that.icmpCode) &&
1226 - Objects.equals(this.type(), that.type());
1227 - }
1228 - return false;
1229 - }
1230 - }
1231 -
1232 - /**
1233 - * Implementation of IPv6 Flow Label (RFC 6437) criterion (20 bits unsigned
1234 - * integer).
1235 - */
1236 - public static final class IPv6FlowLabelCriterion implements Criterion {
1237 - private static final int MASK = 0xfffff;
1238 - private final int flowLabel; // IPv6 flow label: 20 bits
1239 -
1240 - /**
1241 - * Constructor.
1242 - *
1243 - * @param flowLabel the IPv6 flow label to match (20 bits)
1244 - */
1245 - public IPv6FlowLabelCriterion(int flowLabel) {
1246 - this.flowLabel = flowLabel & MASK;
1247 - }
1248 -
1249 - @Override
1250 - public Type type() {
1251 - return Type.IPV6_FLABEL;
1252 - }
1253 -
1254 - /**
1255 - * Gets the IPv6 flow label to match.
1256 - *
1257 - * @return the IPv6 flow label to match (20 bits)
1258 - */
1259 - public int flowLabel() {
1260 - return flowLabel;
1261 - }
1262 -
1263 - @Override
1264 - public String toString() {
1265 - return toStringHelper(type().toString())
1266 - .add("flowLabel", Long.toHexString(flowLabel)).toString();
1267 - }
1268 -
1269 - @Override
1270 - public int hashCode() {
1271 - return Objects.hash(type(), flowLabel);
1272 - }
1273 -
1274 - @Override
1275 - public boolean equals(Object obj) {
1276 - if (this == obj) {
1277 - return true;
1278 - }
1279 - if (obj instanceof IPv6FlowLabelCriterion) {
1280 - IPv6FlowLabelCriterion that = (IPv6FlowLabelCriterion) obj;
1281 - return Objects.equals(flowLabel, that.flowLabel) &&
1282 - Objects.equals(this.type(), that.type());
1283 - }
1284 - return false;
1285 - }
1286 - }
1287 -
1288 - /**
1289 - * Implementation of ICMPv6 type criterion (8 bits unsigned integer).
1290 - */
1291 - public static final class Icmpv6TypeCriterion implements Criterion {
1292 - private static final short MASK = 0xff;
1293 - private final short icmpv6Type; // ICMPv6 type: 8 bits
1294 -
1295 - /**
1296 - * Constructor.
1297 - *
1298 - * @param icmpv6Type the ICMPv6 type to match (8 bits unsigned integer)
1299 - */
1300 - public Icmpv6TypeCriterion(short icmpv6Type) {
1301 - this.icmpv6Type = (short) (icmpv6Type & MASK);
1302 - }
1303 -
1304 - @Override
1305 - public Type type() {
1306 - return Type.ICMPV6_TYPE;
1307 - }
1308 -
1309 - /**
1310 - * Gets the ICMPv6 type to match.
1311 - *
1312 - * @return the ICMPv6 type to match (8 bits unsigned integer)
1313 - */
1314 - public short icmpv6Type() {
1315 - return icmpv6Type;
1316 - }
1317 -
1318 - @Override
1319 - public String toString() {
1320 - return toStringHelper(type().toString())
1321 - .add("icmpv6Type", icmpv6Type).toString();
1322 - }
1323 -
1324 - @Override
1325 - public int hashCode() {
1326 - return Objects.hash(type(), icmpv6Type);
1327 - }
1328 -
1329 - @Override
1330 - public boolean equals(Object obj) {
1331 - if (this == obj) {
1332 - return true;
1333 - }
1334 - if (obj instanceof Icmpv6TypeCriterion) {
1335 - Icmpv6TypeCriterion that = (Icmpv6TypeCriterion) obj;
1336 - return Objects.equals(icmpv6Type, that.icmpv6Type) &&
1337 - Objects.equals(this.type(), that.type());
1338 - }
1339 - return false;
1340 - }
1341 - }
1342 -
1343 - /**
1344 - * Implementation of ICMPv6 code criterion (8 bits unsigned integer).
1345 - */
1346 - public static final class Icmpv6CodeCriterion implements Criterion {
1347 - private static final short MASK = 0xff;
1348 - private final short icmpv6Code; // ICMPv6 code: 8 bits
1349 -
1350 - /**
1351 - * Constructor.
1352 - *
1353 - * @param icmpv6Code the ICMPv6 code to match (8 bits unsigned integer)
1354 - */
1355 - public Icmpv6CodeCriterion(short icmpv6Code) {
1356 - this.icmpv6Code = (short) (icmpv6Code & MASK);
1357 - }
1358 -
1359 - @Override
1360 - public Type type() {
1361 - return Type.ICMPV6_CODE;
1362 - }
1363 -
1364 - /**
1365 - * Gets the ICMPv6 code to match.
1366 - *
1367 - * @return the ICMPv6 code to match (8 bits unsigned integer)
1368 - */
1369 - public short icmpv6Code() {
1370 - return icmpv6Code;
1371 - }
1372 -
1373 - @Override
1374 - public String toString() {
1375 - return toStringHelper(type().toString())
1376 - .add("icmpv6Code", icmpv6Code).toString();
1377 - }
1378 -
1379 - @Override
1380 - public int hashCode() {
1381 - return Objects.hash(type(), icmpv6Code);
1382 - }
1383 -
1384 - @Override
1385 - public boolean equals(Object obj) {
1386 - if (this == obj) {
1387 - return true;
1388 - }
1389 - if (obj instanceof Icmpv6CodeCriterion) {
1390 - Icmpv6CodeCriterion that = (Icmpv6CodeCriterion) obj;
1391 - return Objects.equals(icmpv6Code, that.icmpv6Code) &&
1392 - Objects.equals(this.type(), that.type());
1393 - }
1394 - return false;
1395 - }
1396 - }
1397 -
1398 - /**
1399 - * Implementation of IPv6 Neighbor Discovery target address criterion.
1400 - */
1401 - public static final class IPv6NDTargetAddressCriterion
1402 - implements Criterion {
1403 - private final Ip6Address targetAddress;
1404 -
1405 - /**
1406 - * Constructor.
1407 - *
1408 - * @param targetAddress the IPv6 target address to match
1409 - */
1410 - public IPv6NDTargetAddressCriterion(Ip6Address targetAddress) {
1411 - this.targetAddress = targetAddress;
1412 - }
1413 -
1414 - @Override
1415 - public Type type() {
1416 - return Type.IPV6_ND_TARGET;
1417 - }
1418 -
1419 - /**
1420 - * Gets the IPv6 target address to match.
1421 - *
1422 - * @return the IPv6 target address to match
1423 - */
1424 - public Ip6Address targetAddress() {
1425 - return this.targetAddress;
1426 - }
1427 -
1428 - @Override
1429 - public String toString() {
1430 - return toStringHelper(type().toString())
1431 - .add("targetAddress", targetAddress).toString();
1432 - }
1433 -
1434 - @Override
1435 - public int hashCode() {
1436 - return Objects.hash(type(), targetAddress);
1437 - }
1438 -
1439 - @Override
1440 - public boolean equals(Object obj) {
1441 - if (this == obj) {
1442 - return true;
1443 - }
1444 - if (obj instanceof IPv6NDTargetAddressCriterion) {
1445 - IPv6NDTargetAddressCriterion that =
1446 - (IPv6NDTargetAddressCriterion) obj;
1447 - return Objects.equals(targetAddress, that.targetAddress) &&
1448 - Objects.equals(type(), that.type());
1449 - }
1450 - return false;
1451 - }
1452 - }
1453 -
1454 - /**
1455 - * Implementation of IPv6 Neighbor Discovery link-layer address criterion.
1456 - */
1457 - public static final class IPv6NDLinkLayerAddressCriterion
1458 - implements Criterion {
1459 - private final MacAddress mac;
1460 - private final Type type;
1461 -
1462 - /**
1463 - * Constructor.
1464 - *
1465 - * @param mac the source or destination link-layer address to match
1466 - * @param type the match type. Should be either Type.IPV6_ND_SLL or
1467 - * Type.IPV6_ND_TLL
1468 - */
1469 - public IPv6NDLinkLayerAddressCriterion(MacAddress mac, Type type) {
1470 - this.mac = mac;
1471 - this.type = type;
1472 - }
1473 -
1474 - @Override
1475 - public Type type() {
1476 - return this.type;
1477 - }
1478 -
1479 - /**
1480 - * Gets the MAC link-layer address to match.
1481 - *
1482 - * @return the MAC link-layer address to match
1483 - */
1484 - public MacAddress mac() {
1485 - return this.mac;
1486 - }
1487 -
1488 - @Override
1489 - public String toString() {
1490 - return toStringHelper(type().toString())
1491 - .add("mac", mac).toString();
1492 - }
1493 -
1494 - @Override
1495 - public int hashCode() {
1496 - return Objects.hash(type, mac);
1497 - }
1498 -
1499 - @Override
1500 - public boolean equals(Object obj) {
1501 - if (this == obj) {
1502 - return true;
1503 - }
1504 - if (obj instanceof IPv6NDLinkLayerAddressCriterion) {
1505 - IPv6NDLinkLayerAddressCriterion that =
1506 - (IPv6NDLinkLayerAddressCriterion) obj;
1507 - return Objects.equals(mac, that.mac) &&
1508 - Objects.equals(type, that.type);
1509 - }
1510 - return false;
1511 - }
1512 - }
1513 -
1514 - /**
1515 - * Implementation of MPLS tag criterion (20 bits).
1516 - */
1517 - public static final class MplsCriterion implements Criterion {
1518 - private static final int MASK = 0xfffff;
1519 - private final MplsLabel mplsLabel;
1520 -
1521 - public MplsCriterion(MplsLabel mplsLabel) {
1522 - this.mplsLabel = mplsLabel;
1523 - }
1524 -
1525 - @Override
1526 - public Type type() {
1527 - return Type.MPLS_LABEL;
1528 - }
1529 -
1530 - public MplsLabel label() {
1531 - return mplsLabel;
1532 - }
1533 -
1534 - @Override
1535 - public String toString() {
1536 - return toStringHelper(type().toString())
1537 - .add("mpls", mplsLabel).toString();
1538 - }
1539 -
1540 - @Override
1541 - public int hashCode() {
1542 - return Objects.hash(type(), mplsLabel);
1543 - }
1544 -
1545 - @Override
1546 - public boolean equals(Object obj) {
1547 - if (this == obj) {
1548 - return true;
1549 - }
1550 - if (obj instanceof MplsCriterion) {
1551 - MplsCriterion that = (MplsCriterion) obj;
1552 - return Objects.equals(mplsLabel, that.mplsLabel) &&
1553 - Objects.equals(this.type(), that.type());
1554 - }
1555 - return false;
1556 - }
1557 - }
1558 -
1559 - /**
1560 - * Implementation of IPv6 Extension Header pseudo-field criterion
1561 - * (16 bits). Those are defined in Criterion.IPv6ExthdrFlags.
1562 - */
1563 - public static final class IPv6ExthdrFlagsCriterion implements Criterion {
1564 - private static final int MASK = 0xffff;
1565 - private final int exthdrFlags; // IPv6 Exthdr flags: 16 bits
1566 -
1567 - /**
1568 - * Constructor.
1569 - *
1570 - * @param exthdrFlags the IPv6 Extension Header pseudo-field flags
1571 - * to match (16 bits). Those are defined in Criterion.IPv6ExthdrFlags
1572 - */
1573 - public IPv6ExthdrFlagsCriterion(int exthdrFlags) {
1574 - this.exthdrFlags = exthdrFlags & MASK;
1575 - }
1576 -
1577 - @Override
1578 - public Type type() {
1579 - return Type.IPV6_EXTHDR;
1580 - }
1581 -
1582 - /**
1583 - * Gets the IPv6 Extension Header pseudo-field flags to match.
1584 - *
1585 - * @return the IPv6 Extension Header pseudo-field flags to match
1586 - * (16 bits). Those are defined in Criterion.IPv6ExthdrFlags
1587 - */
1588 - public int exthdrFlags() {
1589 - return exthdrFlags;
1590 - }
1591 -
1592 - @Override
1593 - public String toString() {
1594 - return toStringHelper(type().toString())
1595 - .add("exthdrFlags", Long.toHexString(exthdrFlags)).toString();
1596 - }
1597 -
1598 - @Override
1599 - public int hashCode() {
1600 - return Objects.hash(type(), exthdrFlags);
1601 - }
1602 -
1603 - @Override
1604 - public boolean equals(Object obj) {
1605 - if (this == obj) {
1606 - return true;
1607 - }
1608 - if (obj instanceof IPv6ExthdrFlagsCriterion) {
1609 - IPv6ExthdrFlagsCriterion that = (IPv6ExthdrFlagsCriterion) obj;
1610 - return Objects.equals(exthdrFlags, that.exthdrFlags) &&
1611 - Objects.equals(this.type(), that.type());
1612 - }
1613 - return false;
1614 - }
1615 - }
1616 -
1617 - /**
1618 - * Implementation of lambda (wavelength) criterion (16 bits unsigned
1619 - * integer).
1620 - */
1621 - public static final class LambdaCriterion implements Criterion {
1622 - private static final int MASK = 0xffff;
1623 - private final int lambda; // Lambda value: 16 bits
1624 - private final Type type;
1625 -
1626 - /**
1627 - * Constructor.
1628 - *
1629 - * @param lambda the lambda (wavelength) to match (16 bits unsigned
1630 - * integer)
1631 - * @param type the match type. Should be Type.OCH_SIGID
1632 - */
1633 - public LambdaCriterion(int lambda, Type type) {
1634 - this.lambda = lambda & MASK;
1635 - this.type = type;
1636 - }
1637 -
1638 - @Override
1639 - public Type type() {
1640 - return this.type;
1641 - }
1642 -
1643 - /**
1644 - * Gets the lambda (wavelength) to match.
1645 - *
1646 - * @return the lambda (wavelength) to match (16 bits unsigned integer)
1647 - */
1648 - public int lambda() {
1649 - return lambda;
1650 - }
1651 -
1652 - @Override
1653 - public String toString() {
1654 - return toStringHelper(type().toString())
1655 - .add("lambda", lambda).toString();
1656 - }
1657 -
1658 - @Override
1659 - public int hashCode() {
1660 - return Objects.hash(type, lambda);
1661 - }
1662 -
1663 - @Override
1664 - public boolean equals(Object obj) {
1665 - if (this == obj) {
1666 - return true;
1667 - }
1668 - if (obj instanceof LambdaCriterion) {
1669 - LambdaCriterion that = (LambdaCriterion) obj;
1670 - return Objects.equals(lambda, that.lambda) &&
1671 - Objects.equals(type, that.type);
1672 - }
1673 - return false;
1674 - }
1675 - }
1676 -
1677 - /**
1678 - * Implementation of optical signal type criterion (8 bits unsigned
1679 - * integer).
1680 - */
1681 - public static final class OpticalSignalTypeCriterion implements Criterion {
1682 - private static final short MASK = 0xff;
1683 - private final short signalType; // Signal type value: 8 bits
1684 - private final Type type;
1685 -
1686 - /**
1687 - * Constructor.
1688 - *
1689 - * @param signalType the optical signal type to match (8 bits unsigned
1690 - * integer)
1691 - * @param type the match type. Should be Type.OCH_SIGTYPE
1692 - */
1693 - public OpticalSignalTypeCriterion(short signalType, Type type) {
1694 - this.signalType = (short) (signalType & MASK);
1695 - this.type = type;
1696 - }
1697 -
1698 - @Override
1699 - public Type type() {
1700 - return this.type;
1701 - }
1702 -
1703 - /**
1704 - * Gets the optical signal type to match.
1705 - *
1706 - * @return the optical signal type to match (8 bits unsigned integer)
1707 - */
1708 - public short signalType() {
1709 - return signalType;
1710 - }
1711 -
1712 - @Override
1713 - public String toString() {
1714 - return toStringHelper(type().toString())
1715 - .add("signalType", signalType).toString();
1716 - }
1717 -
1718 - @Override
1719 - public int hashCode() {
1720 - return Objects.hash(type, signalType);
1721 - }
1722 -
1723 - @Override
1724 - public boolean equals(Object obj) {
1725 - if (this == obj) {
1726 - return true;
1727 - }
1728 - if (obj instanceof OpticalSignalTypeCriterion) {
1729 - OpticalSignalTypeCriterion that = (OpticalSignalTypeCriterion) obj;
1730 - return Objects.equals(signalType, that.signalType) &&
1731 - Objects.equals(type, that.type);
1732 - }
1733 - return false;
1734 - }
1735 - }
1736 -
1737 - /**
1738 * Dummy Criterion used with @see{FilteringObjective}. 379 * Dummy Criterion used with @see{FilteringObjective}.
1739 */ 380 */
1740 private static class DummyCriterion implements Criterion { 381 private static class DummyCriterion implements Criterion {
......
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import org.onlab.packet.MacAddress;
19 +
20 +import java.util.Objects;
21 +
22 +import static com.google.common.base.MoreObjects.toStringHelper;
23 +
24 +/**
25 + * Implementation of MAC address criterion.
26 + */
27 +public final class EthCriterion implements Criterion {
28 + private final MacAddress mac;
29 + private final Type type;
30 +
31 + /**
32 + * Constructor.
33 + *
34 + * @param mac the source or destination MAC address to match
35 + * @param type the match type. Should be either Type.ETH_DST or
36 + * Type.ETH_SRC
37 + */
38 + EthCriterion(MacAddress mac, Type type) {
39 + this.mac = mac;
40 + this.type = type;
41 + }
42 +
43 + @Override
44 + public Type type() {
45 + return this.type;
46 + }
47 +
48 + /**
49 + * Gets the MAC address to match.
50 + *
51 + * @return the MAC address to match
52 + */
53 + public MacAddress mac() {
54 + return this.mac;
55 + }
56 +
57 + @Override
58 + public String toString() {
59 + return toStringHelper(type().toString())
60 + .add("mac", mac).toString();
61 + }
62 +
63 + @Override
64 + public int hashCode() {
65 + return Objects.hash(type, mac);
66 + }
67 +
68 + @Override
69 + public boolean equals(Object obj) {
70 + if (this == obj) {
71 + return true;
72 + }
73 + if (obj instanceof EthCriterion) {
74 + EthCriterion that = (EthCriterion) obj;
75 + return Objects.equals(mac, that.mac) &&
76 + Objects.equals(type, that.type);
77 + }
78 + return false;
79 + }
80 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of Ethernet type criterion (16 bits unsigned integer).
24 + */
25 +public final class EthTypeCriterion implements Criterion {
26 + private static final int MASK = 0xffff;
27 + private final int ethType; // Ethernet type value: 16 bits
28 +
29 + /**
30 + * Constructor.
31 + *
32 + * @param ethType the Ethernet frame type to match (16 bits unsigned
33 + * integer)
34 + */
35 + EthTypeCriterion(int ethType) {
36 + this.ethType = ethType & MASK;
37 + }
38 +
39 + @Override
40 + public Type type() {
41 + return Type.ETH_TYPE;
42 + }
43 +
44 + /**
45 + * Gets the Ethernet frame type to match.
46 + *
47 + * @return the Ethernet frame type to match (16 bits unsigned integer)
48 + */
49 + public int ethType() {
50 + return ethType;
51 + }
52 +
53 + @Override
54 + public String toString() {
55 + return toStringHelper(type().toString())
56 + .add("ethType", Long.toHexString(ethType))
57 + .toString();
58 + }
59 +
60 + @Override
61 + public int hashCode() {
62 + return Objects.hash(type(), ethType);
63 + }
64 +
65 + @Override
66 + public boolean equals(Object obj) {
67 + if (this == obj) {
68 + return true;
69 + }
70 + if (obj instanceof EthTypeCriterion) {
71 + EthTypeCriterion that = (EthTypeCriterion) obj;
72 + return Objects.equals(ethType, that.ethType) &&
73 + Objects.equals(this.type(), that.type());
74 + }
75 + return false;
76 + }
77 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import org.onlab.packet.IpPrefix;
19 +
20 +import java.util.Objects;
21 +
22 +import static com.google.common.base.MoreObjects.toStringHelper;
23 +
24 +/**
25 + * Implementation of IP address criterion.
26 + */
27 +public final class IPCriterion implements Criterion {
28 + private final IpPrefix ip;
29 + private final Type type;
30 +
31 + /**
32 + * Constructor.
33 + *
34 + * @param ip the IP prefix to match. Could be either IPv4 or IPv6
35 + * @param type the match type. Should be one of the following:
36 + * Type.IPV4_SRC, Type.IPV4_DST, Type.IPV6_SRC, Type.IPV6_DST
37 + */
38 + IPCriterion(IpPrefix ip, Type type) {
39 + this.ip = ip;
40 + this.type = type;
41 + }
42 +
43 + @Override
44 + public Type type() {
45 + return this.type;
46 + }
47 +
48 + /**
49 + * Gets the IP prefix to match.
50 + *
51 + * @return the IP prefix to match
52 + */
53 + public IpPrefix ip() {
54 + return this.ip;
55 + }
56 +
57 + @Override
58 + public String toString() {
59 + return toStringHelper(type().toString())
60 + .add("ip", ip).toString();
61 + }
62 +
63 + @Override
64 + public int hashCode() {
65 + return Objects.hash(type, ip);
66 + }
67 +
68 + @Override
69 + public boolean equals(Object obj) {
70 + if (this == obj) {
71 + return true;
72 + }
73 + if (obj instanceof IPCriterion) {
74 + IPCriterion that = (IPCriterion) obj;
75 + return Objects.equals(ip, that.ip) &&
76 + Objects.equals(type, that.type);
77 + }
78 + return false;
79 + }
80 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of IP DSCP (Differentiated Services Code Point)
24 + * criterion (6 bits).
25 + */
26 +public final class IPDscpCriterion implements Criterion {
27 + private static final byte MASK = 0x3f;
28 + private final byte ipDscp; // IP DSCP value: 6 bits
29 +
30 + /**
31 + * Constructor.
32 + *
33 + * @param ipDscp the IP DSCP value to match
34 + */
35 + IPDscpCriterion(byte ipDscp) {
36 + this.ipDscp = (byte) (ipDscp & MASK);
37 + }
38 +
39 + @Override
40 + public Type type() {
41 + return Type.IP_DSCP;
42 + }
43 +
44 + /**
45 + * Gets the IP DSCP value to match.
46 + *
47 + * @return the IP DSCP value to match
48 + */
49 + public byte ipDscp() {
50 + return ipDscp;
51 + }
52 +
53 + @Override
54 + public String toString() {
55 + return toStringHelper(type().toString())
56 + .add("ipDscp", Long.toHexString(ipDscp)).toString();
57 + }
58 +
59 + @Override
60 + public int hashCode() {
61 + return Objects.hash(type(), ipDscp);
62 + }
63 +
64 + @Override
65 + public boolean equals(Object obj) {
66 + if (this == obj) {
67 + return true;
68 + }
69 + if (obj instanceof IPDscpCriterion) {
70 + IPDscpCriterion that = (IPDscpCriterion) obj;
71 + return Objects.equals(ipDscp, that.ipDscp) &&
72 + Objects.equals(this.type(), that.type());
73 + }
74 + return false;
75 + }
76 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of IP ECN (Explicit Congestion Notification) criterion
24 + * (2 bits).
25 + */
26 +public final class IPEcnCriterion implements Criterion {
27 + private static final byte MASK = 0x3;
28 + private final byte ipEcn; // IP ECN value: 2 bits
29 +
30 + /**
31 + * Constructor.
32 + *
33 + * @param ipEcn the IP ECN value to match (2 bits)
34 + */
35 + IPEcnCriterion(byte ipEcn) {
36 + this.ipEcn = (byte) (ipEcn & MASK);
37 + }
38 +
39 + @Override
40 + public Type type() {
41 + return Type.IP_ECN;
42 + }
43 +
44 + /**
45 + * Gets the IP ECN value to match.
46 + *
47 + * @return the IP ECN value to match (2 bits)
48 + */
49 + public byte ipEcn() {
50 + return ipEcn;
51 + }
52 +
53 + @Override
54 + public String toString() {
55 + return toStringHelper(type().toString())
56 + .add("ipEcn", Long.toHexString(ipEcn)).toString();
57 + }
58 +
59 + @Override
60 + public int hashCode() {
61 + return Objects.hash(type(), ipEcn);
62 + }
63 +
64 + @Override
65 + public boolean equals(Object obj) {
66 + if (this == obj) {
67 + return true;
68 + }
69 + if (obj instanceof IPEcnCriterion) {
70 + IPEcnCriterion that = (IPEcnCriterion) obj;
71 + return Objects.equals(ipEcn, that.ipEcn) &&
72 + Objects.equals(this.type(), that.type());
73 + }
74 + return false;
75 + }
76 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of Internet Protocol Number criterion (8 bits unsigned)
24 + * integer.
25 + */
26 +public final class IPProtocolCriterion implements Criterion {
27 + private static final short MASK = 0xff;
28 + private final short proto; // IP protocol number: 8 bits
29 +
30 + /**
31 + * Constructor.
32 + *
33 + * @param protocol the IP protocol (e.g., TCP=6, UDP=17) to match
34 + * (8 bits unsigned integer)
35 + */
36 + IPProtocolCriterion(short protocol) {
37 + this.proto = (short) (protocol & MASK);
38 + }
39 +
40 + @Override
41 + public Type type() {
42 + return Type.IP_PROTO;
43 + }
44 +
45 + /**
46 + * Gets the IP protocol to match.
47 + *
48 + * @return the IP protocol to match (8 bits unsigned integer)
49 + */
50 + public short protocol() {
51 + return proto;
52 + }
53 +
54 + @Override
55 + public String toString() {
56 + return toStringHelper(type().toString())
57 + .add("protocol", proto).toString();
58 + }
59 +
60 + @Override
61 + public int hashCode() {
62 + return Objects.hash(type(), proto);
63 + }
64 +
65 + @Override
66 + public boolean equals(Object obj) {
67 + if (this == obj) {
68 + return true;
69 + }
70 + if (obj instanceof IPProtocolCriterion) {
71 + IPProtocolCriterion that = (IPProtocolCriterion) obj;
72 + return Objects.equals(proto, that.proto);
73 + }
74 + return false;
75 + }
76 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of IPv6 Extension Header pseudo-field criterion
24 + * (16 bits). Those are defined in Criterion.IPv6ExthdrFlags.
25 + */
26 +public final class IPv6ExthdrFlagsCriterion implements Criterion {
27 + private static final int MASK = 0xffff;
28 + private final int exthdrFlags; // IPv6 Exthdr flags: 16 bits
29 +
30 + /**
31 + * Constructor.
32 + *
33 + * @param exthdrFlags the IPv6 Extension Header pseudo-field flags
34 + * to match (16 bits). Those are defined in Criterion.IPv6ExthdrFlags
35 + */
36 + IPv6ExthdrFlagsCriterion(int exthdrFlags) {
37 + this.exthdrFlags = exthdrFlags & MASK;
38 + }
39 +
40 + @Override
41 + public Type type() {
42 + return Type.IPV6_EXTHDR;
43 + }
44 +
45 + /**
46 + * Gets the IPv6 Extension Header pseudo-field flags to match.
47 + *
48 + * @return the IPv6 Extension Header pseudo-field flags to match
49 + * (16 bits). Those are defined in Criterion.IPv6ExthdrFlags
50 + */
51 + public int exthdrFlags() {
52 + return exthdrFlags;
53 + }
54 +
55 + @Override
56 + public String toString() {
57 + return toStringHelper(type().toString())
58 + .add("exthdrFlags", Long.toHexString(exthdrFlags)).toString();
59 + }
60 +
61 + @Override
62 + public int hashCode() {
63 + return Objects.hash(type(), exthdrFlags);
64 + }
65 +
66 + @Override
67 + public boolean equals(Object obj) {
68 + if (this == obj) {
69 + return true;
70 + }
71 + if (obj instanceof IPv6ExthdrFlagsCriterion) {
72 + IPv6ExthdrFlagsCriterion that = (IPv6ExthdrFlagsCriterion) obj;
73 + return Objects.equals(exthdrFlags, that.exthdrFlags) &&
74 + Objects.equals(this.type(), that.type());
75 + }
76 + return false;
77 + }
78 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of IPv6 Flow Label (RFC 6437) criterion (20 bits unsigned
24 + * integer).
25 + */
26 +public final class IPv6FlowLabelCriterion implements Criterion {
27 + private static final int MASK = 0xfffff;
28 + private final int flowLabel; // IPv6 flow label: 20 bits
29 +
30 + /**
31 + * Constructor.
32 + *
33 + * @param flowLabel the IPv6 flow label to match (20 bits)
34 + */
35 + IPv6FlowLabelCriterion(int flowLabel) {
36 + this.flowLabel = flowLabel & MASK;
37 + }
38 +
39 + @Override
40 + public Type type() {
41 + return Type.IPV6_FLABEL;
42 + }
43 +
44 + /**
45 + * Gets the IPv6 flow label to match.
46 + *
47 + * @return the IPv6 flow label to match (20 bits)
48 + */
49 + public int flowLabel() {
50 + return flowLabel;
51 + }
52 +
53 + @Override
54 + public String toString() {
55 + return toStringHelper(type().toString())
56 + .add("flowLabel", Long.toHexString(flowLabel)).toString();
57 + }
58 +
59 + @Override
60 + public int hashCode() {
61 + return Objects.hash(type(), flowLabel);
62 + }
63 +
64 + @Override
65 + public boolean equals(Object obj) {
66 + if (this == obj) {
67 + return true;
68 + }
69 + if (obj instanceof IPv6FlowLabelCriterion) {
70 + IPv6FlowLabelCriterion that = (IPv6FlowLabelCriterion) obj;
71 + return Objects.equals(flowLabel, that.flowLabel) &&
72 + Objects.equals(this.type(), that.type());
73 + }
74 + return false;
75 + }
76 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import org.onlab.packet.MacAddress;
19 +
20 +import java.util.Objects;
21 +
22 +import static com.google.common.base.MoreObjects.toStringHelper;
23 +
24 +/**
25 + * Implementation of IPv6 Neighbor Discovery link-layer address criterion.
26 + */
27 +public final class IPv6NDLinkLayerAddressCriterion implements Criterion {
28 + private final MacAddress mac;
29 + private final Type type;
30 +
31 + /**
32 + * Constructor.
33 + *
34 + * @param mac the source or destination link-layer address to match
35 + * @param type the match type. Should be either Type.IPV6_ND_SLL or
36 + * Type.IPV6_ND_TLL
37 + */
38 + IPv6NDLinkLayerAddressCriterion(MacAddress mac, Type type) {
39 + this.mac = mac;
40 + this.type = type;
41 + }
42 +
43 + @Override
44 + public Type type() {
45 + return this.type;
46 + }
47 +
48 + /**
49 + * Gets the MAC link-layer address to match.
50 + *
51 + * @return the MAC link-layer address to match
52 + */
53 + public MacAddress mac() {
54 + return this.mac;
55 + }
56 +
57 + @Override
58 + public String toString() {
59 + return toStringHelper(type().toString())
60 + .add("mac", mac).toString();
61 + }
62 +
63 + @Override
64 + public int hashCode() {
65 + return Objects.hash(type, mac);
66 + }
67 +
68 + @Override
69 + public boolean equals(Object obj) {
70 + if (this == obj) {
71 + return true;
72 + }
73 + if (obj instanceof IPv6NDLinkLayerAddressCriterion) {
74 + IPv6NDLinkLayerAddressCriterion that =
75 + (IPv6NDLinkLayerAddressCriterion) obj;
76 + return Objects.equals(mac, that.mac) &&
77 + Objects.equals(type, that.type);
78 + }
79 + return false;
80 + }
81 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import org.onlab.packet.Ip6Address;
19 +
20 +import java.util.Objects;
21 +
22 +import static com.google.common.base.MoreObjects.toStringHelper;
23 +
24 +/**
25 + * Implementation of IPv6 Neighbor Discovery target address criterion.
26 + */
27 +public final class IPv6NDTargetAddressCriterion implements Criterion {
28 + private final Ip6Address targetAddress;
29 +
30 + /**
31 + * Constructor.
32 + *
33 + * @param targetAddress the IPv6 target address to match
34 + */
35 + IPv6NDTargetAddressCriterion(Ip6Address targetAddress) {
36 + this.targetAddress = targetAddress;
37 + }
38 +
39 + @Override
40 + public Type type() {
41 + return Type.IPV6_ND_TARGET;
42 + }
43 +
44 + /**
45 + * Gets the IPv6 target address to match.
46 + *
47 + * @return the IPv6 target address to match
48 + */
49 + public Ip6Address targetAddress() {
50 + return this.targetAddress;
51 + }
52 +
53 + @Override
54 + public String toString() {
55 + return toStringHelper(type().toString())
56 + .add("targetAddress", targetAddress).toString();
57 + }
58 +
59 + @Override
60 + public int hashCode() {
61 + return Objects.hash(type(), targetAddress);
62 + }
63 +
64 + @Override
65 + public boolean equals(Object obj) {
66 + if (this == obj) {
67 + return true;
68 + }
69 + if (obj instanceof IPv6NDTargetAddressCriterion) {
70 + IPv6NDTargetAddressCriterion that =
71 + (IPv6NDTargetAddressCriterion) obj;
72 + return Objects.equals(targetAddress, that.targetAddress) &&
73 + Objects.equals(type(), that.type());
74 + }
75 + return false;
76 + }
77 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of ICMP code criterion (8 bits unsigned integer).
24 + */
25 +public final class IcmpCodeCriterion implements Criterion {
26 + private static final short MASK = 0xff;
27 + private final short icmpCode; // The ICMP code: 8 bits
28 +
29 + /**
30 + * Constructor.
31 + *
32 + * @param icmpCode the ICMP code to match (8 bits unsigned integer)
33 + */
34 + IcmpCodeCriterion(short icmpCode) {
35 + this.icmpCode = (short) (icmpCode & MASK);
36 + }
37 +
38 + @Override
39 + public Type type() {
40 + return Type.ICMPV4_CODE;
41 + }
42 +
43 + /**
44 + * Gets the ICMP code to match.
45 + *
46 + * @return the ICMP code to match (8 bits unsigned integer)
47 + */
48 + public short icmpCode() {
49 + return icmpCode;
50 + }
51 +
52 + @Override
53 + public String toString() {
54 + return toStringHelper(type().toString())
55 + .add("icmpCode", icmpCode).toString();
56 + }
57 +
58 + @Override
59 + public int hashCode() {
60 + return Objects.hash(type(), icmpCode);
61 + }
62 +
63 + @Override
64 + public boolean equals(Object obj) {
65 + if (this == obj) {
66 + return true;
67 + }
68 + if (obj instanceof IcmpCodeCriterion) {
69 + IcmpCodeCriterion that = (IcmpCodeCriterion) obj;
70 + return Objects.equals(icmpCode, that.icmpCode) &&
71 + Objects.equals(this.type(), that.type());
72 + }
73 + return false;
74 + }
75 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of ICMP type criterion (8 bits unsigned integer).
24 + */
25 +public final class IcmpTypeCriterion implements Criterion {
26 + private static final short MASK = 0xff;
27 + private final short icmpType; // The ICMP type: 8 bits
28 +
29 + /**
30 + * Constructor.
31 + *
32 + * @param icmpType the ICMP type to match (8 bits unsigned integer)
33 + */
34 + IcmpTypeCriterion(short icmpType) {
35 + this.icmpType = (short) (icmpType & MASK);
36 + }
37 +
38 + @Override
39 + public Type type() {
40 + return Type.ICMPV4_TYPE;
41 + }
42 +
43 + /**
44 + * Gets the ICMP type to match.
45 + *
46 + * @return the ICMP type to match (8 bits unsigned integer)
47 + */
48 + public short icmpType() {
49 + return icmpType;
50 + }
51 +
52 + @Override
53 + public String toString() {
54 + return toStringHelper(type().toString())
55 + .add("icmpType", icmpType).toString();
56 + }
57 +
58 + @Override
59 + public int hashCode() {
60 + return Objects.hash(type(), icmpType);
61 + }
62 +
63 + @Override
64 + public boolean equals(Object obj) {
65 + if (this == obj) {
66 + return true;
67 + }
68 + if (obj instanceof IcmpTypeCriterion) {
69 + IcmpTypeCriterion that = (IcmpTypeCriterion) obj;
70 + return Objects.equals(icmpType, that.icmpType) &&
71 + Objects.equals(this.type(), that.type());
72 + }
73 + return false;
74 + }
75 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of ICMPv6 code criterion (8 bits unsigned integer).
24 + */
25 +public final class Icmpv6CodeCriterion implements Criterion {
26 + private static final short MASK = 0xff;
27 + private final short icmpv6Code; // ICMPv6 code: 8 bits
28 +
29 + /**
30 + * Constructor.
31 + *
32 + * @param icmpv6Code the ICMPv6 code to match (8 bits unsigned integer)
33 + */
34 + Icmpv6CodeCriterion(short icmpv6Code) {
35 + this.icmpv6Code = (short) (icmpv6Code & MASK);
36 + }
37 +
38 + @Override
39 + public Type type() {
40 + return Type.ICMPV6_CODE;
41 + }
42 +
43 + /**
44 + * Gets the ICMPv6 code to match.
45 + *
46 + * @return the ICMPv6 code to match (8 bits unsigned integer)
47 + */
48 + public short icmpv6Code() {
49 + return icmpv6Code;
50 + }
51 +
52 + @Override
53 + public String toString() {
54 + return toStringHelper(type().toString())
55 + .add("icmpv6Code", icmpv6Code).toString();
56 + }
57 +
58 + @Override
59 + public int hashCode() {
60 + return Objects.hash(type(), icmpv6Code);
61 + }
62 +
63 + @Override
64 + public boolean equals(Object obj) {
65 + if (this == obj) {
66 + return true;
67 + }
68 + if (obj instanceof Icmpv6CodeCriterion) {
69 + Icmpv6CodeCriterion that = (Icmpv6CodeCriterion) obj;
70 + return Objects.equals(icmpv6Code, that.icmpv6Code) &&
71 + Objects.equals(this.type(), that.type());
72 + }
73 + return false;
74 + }
75 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of ICMPv6 type criterion (8 bits unsigned integer).
24 + */
25 +public final class Icmpv6TypeCriterion implements Criterion {
26 + private static final short MASK = 0xff;
27 + private final short icmpv6Type; // ICMPv6 type: 8 bits
28 +
29 + /**
30 + * Constructor.
31 + *
32 + * @param icmpv6Type the ICMPv6 type to match (8 bits unsigned integer)
33 + */
34 + Icmpv6TypeCriterion(short icmpv6Type) {
35 + this.icmpv6Type = (short) (icmpv6Type & MASK);
36 + }
37 +
38 + @Override
39 + public Type type() {
40 + return Type.ICMPV6_TYPE;
41 + }
42 +
43 + /**
44 + * Gets the ICMPv6 type to match.
45 + *
46 + * @return the ICMPv6 type to match (8 bits unsigned integer)
47 + */
48 + public short icmpv6Type() {
49 + return icmpv6Type;
50 + }
51 +
52 + @Override
53 + public String toString() {
54 + return toStringHelper(type().toString())
55 + .add("icmpv6Type", icmpv6Type).toString();
56 + }
57 +
58 + @Override
59 + public int hashCode() {
60 + return Objects.hash(type(), icmpv6Type);
61 + }
62 +
63 + @Override
64 + public boolean equals(Object obj) {
65 + if (this == obj) {
66 + return true;
67 + }
68 + if (obj instanceof Icmpv6TypeCriterion) {
69 + Icmpv6TypeCriterion that = (Icmpv6TypeCriterion) obj;
70 + return Objects.equals(icmpv6Type, that.icmpv6Type) &&
71 + Objects.equals(this.type(), that.type());
72 + }
73 + return false;
74 + }
75 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of lambda (wavelength) criterion (16 bits unsigned
24 + * integer).
25 + */
26 +public final class LambdaCriterion implements Criterion {
27 + private static final int MASK = 0xffff;
28 + private final int lambda; // Lambda value: 16 bits
29 + private final Type type;
30 +
31 + /**
32 + * Constructor.
33 + *
34 + * @param lambda the lambda (wavelength) to match (16 bits unsigned
35 + * integer)
36 + * @param type the match type. Should be Type.OCH_SIGID
37 + */
38 + LambdaCriterion(int lambda, Type type) {
39 + this.lambda = lambda & MASK;
40 + this.type = type;
41 + }
42 +
43 + @Override
44 + public Type type() {
45 + return this.type;
46 + }
47 +
48 + /**
49 + * Gets the lambda (wavelength) to match.
50 + *
51 + * @return the lambda (wavelength) to match (16 bits unsigned integer)
52 + */
53 + public int lambda() {
54 + return lambda;
55 + }
56 +
57 + @Override
58 + public String toString() {
59 + return toStringHelper(type().toString())
60 + .add("lambda", lambda).toString();
61 + }
62 +
63 + @Override
64 + public int hashCode() {
65 + return Objects.hash(type, lambda);
66 + }
67 +
68 + @Override
69 + public boolean equals(Object obj) {
70 + if (this == obj) {
71 + return true;
72 + }
73 + if (obj instanceof LambdaCriterion) {
74 + LambdaCriterion that = (LambdaCriterion) obj;
75 + return Objects.equals(lambda, that.lambda) &&
76 + Objects.equals(type, that.type);
77 + }
78 + return false;
79 + }
80 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of Metadata criterion.
24 + */
25 +public final class MetadataCriterion implements Criterion {
26 + private final long metadata;
27 +
28 + /**
29 + * Constructor.
30 + *
31 + * @param metadata the metadata to match (64 bits data)
32 + */
33 + MetadataCriterion(long metadata) {
34 + this.metadata = metadata;
35 + }
36 +
37 + @Override
38 + public Type type() {
39 + return Type.METADATA;
40 + }
41 +
42 + /**
43 + * Gets the metadata to match.
44 + *
45 + * @return the metadata to match (64 bits data)
46 + */
47 + public long metadata() {
48 + return metadata;
49 + }
50 +
51 + @Override
52 + public String toString() {
53 + return toStringHelper(type().toString())
54 + .add("metadata", Long.toHexString(metadata))
55 + .toString();
56 + }
57 +
58 + @Override
59 + public int hashCode() {
60 + return Objects.hash(type(), metadata);
61 + }
62 +
63 + @Override
64 + public boolean equals(Object obj) {
65 + if (this == obj) {
66 + return true;
67 + }
68 + if (obj instanceof MetadataCriterion) {
69 + MetadataCriterion that = (MetadataCriterion) obj;
70 + return Objects.equals(metadata, that.metadata) &&
71 + Objects.equals(this.type(), that.type());
72 + }
73 + return false;
74 + }
75 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import org.onlab.packet.MplsLabel;
19 +
20 +import java.util.Objects;
21 +
22 +import static com.google.common.base.MoreObjects.toStringHelper;
23 +
24 +/**
25 + * Implementation of MPLS tag criterion (20 bits).
26 + */
27 +public final class MplsCriterion implements Criterion {
28 + private static final int MASK = 0xfffff;
29 + private final MplsLabel mplsLabel;
30 +
31 + MplsCriterion(MplsLabel mplsLabel) {
32 + this.mplsLabel = mplsLabel;
33 + }
34 +
35 + @Override
36 + public Type type() {
37 + return Type.MPLS_LABEL;
38 + }
39 +
40 + public MplsLabel label() {
41 + return mplsLabel;
42 + }
43 +
44 + @Override
45 + public String toString() {
46 + return toStringHelper(type().toString())
47 + .add("mpls", mplsLabel).toString();
48 + }
49 +
50 + @Override
51 + public int hashCode() {
52 + return Objects.hash(type(), mplsLabel);
53 + }
54 +
55 + @Override
56 + public boolean equals(Object obj) {
57 + if (this == obj) {
58 + return true;
59 + }
60 + if (obj instanceof MplsCriterion) {
61 + MplsCriterion that = (MplsCriterion) obj;
62 + return Objects.equals(mplsLabel, that.mplsLabel) &&
63 + Objects.equals(this.type(), that.type());
64 + }
65 + return false;
66 + }
67 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of optical signal type criterion (8 bits unsigned
24 + * integer).
25 + */
26 +public final class OpticalSignalTypeCriterion implements Criterion {
27 + private static final short MASK = 0xff;
28 + private final short signalType; // Signal type value: 8 bits
29 + private final Type type;
30 +
31 + /**
32 + * Constructor.
33 + *
34 + * @param signalType the optical signal type to match (8 bits unsigned
35 + * integer)
36 + * @param type the match type. Should be Type.OCH_SIGTYPE
37 + */
38 + OpticalSignalTypeCriterion(short signalType, Type type) {
39 + this.signalType = (short) (signalType & MASK);
40 + this.type = type;
41 + }
42 +
43 + @Override
44 + public Type type() {
45 + return this.type;
46 + }
47 +
48 + /**
49 + * Gets the optical signal type to match.
50 + *
51 + * @return the optical signal type to match (8 bits unsigned integer)
52 + */
53 + public short signalType() {
54 + return signalType;
55 + }
56 +
57 + @Override
58 + public String toString() {
59 + return toStringHelper(type().toString())
60 + .add("signalType", signalType).toString();
61 + }
62 +
63 + @Override
64 + public int hashCode() {
65 + return Objects.hash(type, signalType);
66 + }
67 +
68 + @Override
69 + public boolean equals(Object obj) {
70 + if (this == obj) {
71 + return true;
72 + }
73 + if (obj instanceof OpticalSignalTypeCriterion) {
74 + OpticalSignalTypeCriterion that = (OpticalSignalTypeCriterion) obj;
75 + return Objects.equals(signalType, that.signalType) &&
76 + Objects.equals(type, that.type);
77 + }
78 + return false;
79 + }
80 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import org.onosproject.net.PortNumber;
19 +
20 +import java.util.Objects;
21 +
22 +import static com.google.common.base.MoreObjects.toStringHelper;
23 +
24 +/**
25 + * Implementation of input port criterion.
26 + */
27 +public final class PortCriterion implements Criterion {
28 + private final PortNumber port;
29 + private final Type type;
30 +
31 + /**
32 + * Constructor.
33 + *
34 + * @param port the input port number to match
35 + * @param type the match type. Should be either Type.IN_PORT or
36 + * Type.IN_PHY_PORT
37 + */
38 + PortCriterion(PortNumber port, Type type) {
39 + this.port = port;
40 + this.type = type;
41 + }
42 +
43 + @Override
44 + public Type type() {
45 + return this.type;
46 + }
47 +
48 + /**
49 + * Gets the input port number to match.
50 + *
51 + * @return the input port number to match
52 + */
53 + public PortNumber port() {
54 + return this.port;
55 + }
56 +
57 + @Override
58 + public String toString() {
59 + return toStringHelper(type().toString())
60 + .add("port", port).toString();
61 + }
62 +
63 + @Override
64 + public int hashCode() {
65 + return Objects.hash(type(), port);
66 + }
67 +
68 + @Override
69 + public boolean equals(Object obj) {
70 + if (this == obj) {
71 + return true;
72 + }
73 + if (obj instanceof PortCriterion) {
74 + PortCriterion that = (PortCriterion) obj;
75 + return Objects.equals(port, that.port) &&
76 + Objects.equals(this.type(), that.type());
77 + }
78 + return false;
79 + }
80 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of SCTP port criterion (16 bits unsigned integer).
24 + */
25 +public final class SctpPortCriterion implements Criterion {
26 + private static final int MASK = 0xffff;
27 + private final int sctpPort; // Port value: 16 bits
28 + private final Type type;
29 +
30 + /**
31 + * Constructor.
32 + *
33 + * @param sctpPort the SCTP port to match (16 bits unsigned integer)
34 + * @param type the match type. Should be either Type.SCTP_SRC or
35 + * Type.SCTP_DST
36 + */
37 + SctpPortCriterion(int sctpPort, Type type) {
38 + this.sctpPort = sctpPort & MASK;
39 + this.type = type;
40 + }
41 +
42 + @Override
43 + public Type type() {
44 + return this.type;
45 + }
46 +
47 + /**
48 + * Gets the SCTP port to match.
49 + *
50 + * @return the SCTP port to match (16 bits unsigned integer)
51 + */
52 + public int sctpPort() {
53 + return this.sctpPort;
54 + }
55 +
56 + @Override
57 + public String toString() {
58 + return toStringHelper(type().toString())
59 + .add("sctpPort", sctpPort).toString();
60 + }
61 +
62 + @Override
63 + public int hashCode() {
64 + return Objects.hash(type, sctpPort);
65 + }
66 +
67 + @Override
68 + public boolean equals(Object obj) {
69 + if (this == obj) {
70 + return true;
71 + }
72 + if (obj instanceof SctpPortCriterion) {
73 + SctpPortCriterion that = (SctpPortCriterion) obj;
74 + return Objects.equals(sctpPort, that.sctpPort) &&
75 + Objects.equals(type, that.type);
76 + }
77 + return false;
78 + }
79 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of TCP port criterion (16 bits unsigned integer).
24 + */
25 +public final class TcpPortCriterion implements Criterion {
26 + private static final int MASK = 0xffff;
27 + private final int tcpPort; // Port value: 16 bits
28 + private final Type type;
29 +
30 + /**
31 + * Constructor.
32 + *
33 + * @param tcpPort the TCP port to match (16 bits unsigned integer)
34 + * @param type the match type. Should be either Type.TCP_SRC or
35 + * Type.TCP_DST
36 + */
37 + TcpPortCriterion(int tcpPort, Type type) {
38 + this.tcpPort = tcpPort & MASK;
39 + this.type = type;
40 + }
41 +
42 + @Override
43 + public Type type() {
44 + return this.type;
45 + }
46 +
47 + /**
48 + * Gets the TCP port to match.
49 + *
50 + * @return the TCP port to match (16 bits unsigned integer)
51 + */
52 + public int tcpPort() {
53 + return this.tcpPort;
54 + }
55 +
56 + @Override
57 + public String toString() {
58 + return toStringHelper(type().toString())
59 + .add("tcpPort", tcpPort).toString();
60 + }
61 +
62 + @Override
63 + public int hashCode() {
64 + return Objects.hash(type, tcpPort);
65 + }
66 +
67 + @Override
68 + public boolean equals(Object obj) {
69 + if (this == obj) {
70 + return true;
71 + }
72 + if (obj instanceof TcpPortCriterion) {
73 + TcpPortCriterion that = (TcpPortCriterion) obj;
74 + return Objects.equals(tcpPort, that.tcpPort) &&
75 + Objects.equals(type, that.type);
76 + }
77 + return false;
78 + }
79 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of UDP port criterion (16 bits unsigned integer).
24 + */
25 +public final class UdpPortCriterion implements Criterion {
26 + private static final int MASK = 0xffff;
27 + private final int udpPort; // Port value: 16 bits
28 + private final Type type;
29 +
30 + /**
31 + * Constructor.
32 + *
33 + * @param udpPort the UDP port to match (16 bits unsigned integer)
34 + * @param type the match type. Should be either Type.UDP_SRC or
35 + * Type.UDP_DST
36 + */
37 + UdpPortCriterion(int udpPort, Type type) {
38 + this.udpPort = udpPort & MASK;
39 + this.type = type;
40 + }
41 +
42 + @Override
43 + public Type type() {
44 + return this.type;
45 + }
46 +
47 + /**
48 + * Gets the UDP port to match.
49 + *
50 + * @return the UDP port to match (16 bits unsigned integer)
51 + */
52 + public int udpPort() {
53 + return this.udpPort;
54 + }
55 +
56 + @Override
57 + public String toString() {
58 + return toStringHelper(type().toString())
59 + .add("udpPort", udpPort).toString();
60 + }
61 +
62 + @Override
63 + public int hashCode() {
64 + return Objects.hash(type, udpPort);
65 + }
66 +
67 + @Override
68 + public boolean equals(Object obj) {
69 + if (this == obj) {
70 + return true;
71 + }
72 + if (obj instanceof UdpPortCriterion) {
73 + UdpPortCriterion that = (UdpPortCriterion) obj;
74 + return Objects.equals(udpPort, that.udpPort) &&
75 + Objects.equals(type, that.type);
76 + }
77 + return false;
78 + }
79 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import org.onlab.packet.VlanId;
19 +
20 +import java.util.Objects;
21 +
22 +import static com.google.common.base.MoreObjects.toStringHelper;
23 +
24 +/**
25 + * Implementation of VLAN ID criterion.
26 + */
27 +public final class VlanIdCriterion implements Criterion {
28 + private final VlanId vlanId;
29 +
30 + /**
31 + * Constructor.
32 + *
33 + * @param vlanId the VLAN ID to match
34 + */
35 + VlanIdCriterion(VlanId vlanId) {
36 + this.vlanId = vlanId;
37 + }
38 +
39 + @Override
40 + public Type type() {
41 + return Type.VLAN_VID;
42 + }
43 +
44 + /**
45 + * Gets the VLAN ID to match.
46 + *
47 + * @return the VLAN ID to match
48 + */
49 + public VlanId vlanId() {
50 + return vlanId;
51 + }
52 +
53 + @Override
54 + public String toString() {
55 + return toStringHelper(type().toString())
56 + .add("vlanId", vlanId).toString();
57 + }
58 +
59 + @Override
60 + public int hashCode() {
61 + return Objects.hash(type(), vlanId);
62 + }
63 +
64 + @Override
65 + public boolean equals(Object obj) {
66 + if (this == obj) {
67 + return true;
68 + }
69 + if (obj instanceof VlanIdCriterion) {
70 + VlanIdCriterion that = (VlanIdCriterion) obj;
71 + return Objects.equals(vlanId, that.vlanId) &&
72 + Objects.equals(this.type(), that.type());
73 + }
74 + return false;
75 + }
76 +}
1 +/*
2 + * Copyright 2015 Open Networking Laboratory
3 + *
4 + * Licensed under the Apache License, Version 2.0 (the "License");
5 + * you may not use this file except in compliance with the License.
6 + * You may obtain a copy of the License at
7 + *
8 + * http://www.apache.org/licenses/LICENSE-2.0
9 + *
10 + * Unless required by applicable law or agreed to in writing, software
11 + * distributed under the License is distributed on an "AS IS" BASIS,
12 + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 + * See the License for the specific language governing permissions and
14 + * limitations under the License.
15 + */
16 +package org.onosproject.net.flow.criteria;
17 +
18 +import java.util.Objects;
19 +
20 +import static com.google.common.base.MoreObjects.toStringHelper;
21 +
22 +/**
23 + * Implementation of VLAN priority criterion (3 bits).
24 + */
25 +public final class VlanPcpCriterion implements Criterion {
26 + private static final byte MASK = 0x7;
27 + private final byte vlanPcp; // VLAN pcp value: 3 bits
28 +
29 + /**
30 + * Constructor.
31 + *
32 + * @param vlanPcp the VLAN priority to match (3 bits)
33 + */
34 + VlanPcpCriterion(byte vlanPcp) {
35 + this.vlanPcp = (byte) (vlanPcp & MASK);
36 + }
37 +
38 + @Override
39 + public Type type() {
40 + return Type.VLAN_PCP;
41 + }
42 +
43 + /**
44 + * Gets the VLAN priority to match.
45 + *
46 + * @return the VLAN priority to match (3 bits)
47 + */
48 + public byte priority() {
49 + return vlanPcp;
50 + }
51 +
52 + @Override
53 + public String toString() {
54 + return toStringHelper(type().toString())
55 + .add("priority", Long.toHexString(vlanPcp)).toString();
56 + }
57 +
58 + @Override
59 + public int hashCode() {
60 + return Objects.hash(type(), vlanPcp);
61 + }
62 +
63 + @Override
64 + public boolean equals(Object obj) {
65 + if (this == obj) {
66 + return true;
67 + }
68 + if (obj instanceof VlanPcpCriterion) {
69 + VlanPcpCriterion that = (VlanPcpCriterion) obj;
70 + return Objects.equals(vlanPcp, that.vlanPcp) &&
71 + Objects.equals(this.type(), that.type());
72 + }
73 + return false;
74 + }
75 +}
...@@ -254,30 +254,30 @@ public class CriteriaTest { ...@@ -254,30 +254,30 @@ public class CriteriaTest {
254 */ 254 */
255 @Test 255 @Test
256 public void testCriteriaImmutability() { 256 public void testCriteriaImmutability() {
257 - assertThatClassIsImmutable(Criteria.PortCriterion.class); 257 + assertThatClassIsImmutable(PortCriterion.class);
258 - assertThatClassIsImmutable(Criteria.MetadataCriterion.class); 258 + assertThatClassIsImmutable(MetadataCriterion.class);
259 - assertThatClassIsImmutable(Criteria.EthCriterion.class); 259 + assertThatClassIsImmutable(EthCriterion.class);
260 - assertThatClassIsImmutable(Criteria.EthTypeCriterion.class); 260 + assertThatClassIsImmutable(EthTypeCriterion.class);
261 - assertThatClassIsImmutable(Criteria.VlanIdCriterion.class); 261 + assertThatClassIsImmutable(VlanIdCriterion.class);
262 - assertThatClassIsImmutable(Criteria.VlanPcpCriterion.class); 262 + assertThatClassIsImmutable(VlanPcpCriterion.class);
263 - assertThatClassIsImmutable(Criteria.IPDscpCriterion.class); 263 + assertThatClassIsImmutable(IPDscpCriterion.class);
264 - assertThatClassIsImmutable(Criteria.IPEcnCriterion.class); 264 + assertThatClassIsImmutable(IPEcnCriterion.class);
265 - assertThatClassIsImmutable(Criteria.IPProtocolCriterion.class); 265 + assertThatClassIsImmutable(IPProtocolCriterion.class);
266 - assertThatClassIsImmutable(Criteria.IPCriterion.class); 266 + assertThatClassIsImmutable(IPCriterion.class);
267 - assertThatClassIsImmutable(Criteria.TcpPortCriterion.class); 267 + assertThatClassIsImmutable(TcpPortCriterion.class);
268 - assertThatClassIsImmutable(Criteria.UdpPortCriterion.class); 268 + assertThatClassIsImmutable(UdpPortCriterion.class);
269 - assertThatClassIsImmutable(Criteria.SctpPortCriterion.class); 269 + assertThatClassIsImmutable(SctpPortCriterion.class);
270 - assertThatClassIsImmutable(Criteria.IcmpTypeCriterion.class); 270 + assertThatClassIsImmutable(IcmpTypeCriterion.class);
271 - assertThatClassIsImmutable(Criteria.IcmpCodeCriterion.class); 271 + assertThatClassIsImmutable(IcmpCodeCriterion.class);
272 - assertThatClassIsImmutable(Criteria.IPv6FlowLabelCriterion.class); 272 + assertThatClassIsImmutable(IPv6FlowLabelCriterion.class);
273 - assertThatClassIsImmutable(Criteria.Icmpv6TypeCriterion.class); 273 + assertThatClassIsImmutable(Icmpv6TypeCriterion.class);
274 - assertThatClassIsImmutable(Criteria.Icmpv6CodeCriterion.class); 274 + assertThatClassIsImmutable(Icmpv6CodeCriterion.class);
275 - assertThatClassIsImmutable(Criteria.IPv6NDTargetAddressCriterion.class); 275 + assertThatClassIsImmutable(IPv6NDTargetAddressCriterion.class);
276 - assertThatClassIsImmutable(Criteria.IPv6NDLinkLayerAddressCriterion.class); 276 + assertThatClassIsImmutable(IPv6NDLinkLayerAddressCriterion.class);
277 - assertThatClassIsImmutable(Criteria.MplsCriterion.class); 277 + assertThatClassIsImmutable(MplsCriterion.class);
278 - assertThatClassIsImmutable(Criteria.IPv6ExthdrFlagsCriterion.class); 278 + assertThatClassIsImmutable(IPv6ExthdrFlagsCriterion.class);
279 - assertThatClassIsImmutable(Criteria.LambdaCriterion.class); 279 + assertThatClassIsImmutable(LambdaCriterion.class);
280 - assertThatClassIsImmutable(Criteria.OpticalSignalTypeCriterion.class); 280 + assertThatClassIsImmutable(OpticalSignalTypeCriterion.class);
281 } 281 }
282 282
283 // PortCriterion class 283 // PortCriterion class
...@@ -289,10 +289,10 @@ public class CriteriaTest { ...@@ -289,10 +289,10 @@ public class CriteriaTest {
289 public void testMatchInPortMethod() { 289 public void testMatchInPortMethod() {
290 PortNumber p1 = portNumber(1); 290 PortNumber p1 = portNumber(1);
291 Criterion matchInPort = Criteria.matchInPort(p1); 291 Criterion matchInPort = Criteria.matchInPort(p1);
292 - Criteria.PortCriterion portCriterion = 292 + PortCriterion portCriterion =
293 checkAndConvert(matchInPort, 293 checkAndConvert(matchInPort,
294 Criterion.Type.IN_PORT, 294 Criterion.Type.IN_PORT,
295 - Criteria.PortCriterion.class); 295 + PortCriterion.class);
296 assertThat(portCriterion.port(), is(equalTo(p1))); 296 assertThat(portCriterion.port(), is(equalTo(p1)));
297 } 297 }
298 298
...@@ -303,10 +303,10 @@ public class CriteriaTest { ...@@ -303,10 +303,10 @@ public class CriteriaTest {
303 public void testMatchInPhyPortMethod() { 303 public void testMatchInPhyPortMethod() {
304 PortNumber p1 = portNumber(1); 304 PortNumber p1 = portNumber(1);
305 Criterion matchInPhyPort = Criteria.matchInPhyPort(p1); 305 Criterion matchInPhyPort = Criteria.matchInPhyPort(p1);
306 - Criteria.PortCriterion portCriterion = 306 + PortCriterion portCriterion =
307 checkAndConvert(matchInPhyPort, 307 checkAndConvert(matchInPhyPort,
308 Criterion.Type.IN_PHY_PORT, 308 Criterion.Type.IN_PHY_PORT,
309 - Criteria.PortCriterion.class); 309 + PortCriterion.class);
310 assertThat(portCriterion.port(), is(equalTo(p1))); 310 assertThat(portCriterion.port(), is(equalTo(p1)));
311 } 311 }
312 312
...@@ -335,10 +335,10 @@ public class CriteriaTest { ...@@ -335,10 +335,10 @@ public class CriteriaTest {
335 public void testMatchMetadataMethod() { 335 public void testMatchMetadataMethod() {
336 Long metadata = 12L; 336 Long metadata = 12L;
337 Criterion matchMetadata = Criteria.matchMetadata(metadata); 337 Criterion matchMetadata = Criteria.matchMetadata(metadata);
338 - Criteria.MetadataCriterion metadataCriterion = 338 + MetadataCriterion metadataCriterion =
339 checkAndConvert(matchMetadata, 339 checkAndConvert(matchMetadata,
340 Criterion.Type.METADATA, 340 Criterion.Type.METADATA,
341 - Criteria.MetadataCriterion.class); 341 + MetadataCriterion.class);
342 assertThat(metadataCriterion.metadata(), is(equalTo(metadata))); 342 assertThat(metadataCriterion.metadata(), is(equalTo(metadata)));
343 } 343 }
344 344
...@@ -361,10 +361,10 @@ public class CriteriaTest { ...@@ -361,10 +361,10 @@ public class CriteriaTest {
361 @Test 361 @Test
362 public void testMatchEthDstMethod() { 362 public void testMatchEthDstMethod() {
363 Criterion matchEthDst = Criteria.matchEthDst(mac1); 363 Criterion matchEthDst = Criteria.matchEthDst(mac1);
364 - Criteria.EthCriterion ethCriterion = 364 + EthCriterion ethCriterion =
365 checkAndConvert(matchEthDst, 365 checkAndConvert(matchEthDst,
366 Criterion.Type.ETH_DST, 366 Criterion.Type.ETH_DST,
367 - Criteria.EthCriterion.class); 367 + EthCriterion.class);
368 assertThat(ethCriterion.mac(), is(equalTo(mac1))); 368 assertThat(ethCriterion.mac(), is(equalTo(mac1)));
369 } 369 }
370 370
...@@ -374,10 +374,10 @@ public class CriteriaTest { ...@@ -374,10 +374,10 @@ public class CriteriaTest {
374 @Test 374 @Test
375 public void testMatchEthSrcMethod() { 375 public void testMatchEthSrcMethod() {
376 Criterion matchEthSrc = Criteria.matchEthSrc(mac1); 376 Criterion matchEthSrc = Criteria.matchEthSrc(mac1);
377 - Criteria.EthCriterion ethCriterion = 377 + EthCriterion ethCriterion =
378 checkAndConvert(matchEthSrc, 378 checkAndConvert(matchEthSrc,
379 Criterion.Type.ETH_SRC, 379 Criterion.Type.ETH_SRC,
380 - Criteria.EthCriterion.class); 380 + EthCriterion.class);
381 assertThat(ethCriterion.mac(), is(mac1)); 381 assertThat(ethCriterion.mac(), is(mac1));
382 } 382 }
383 383
...@@ -401,10 +401,10 @@ public class CriteriaTest { ...@@ -401,10 +401,10 @@ public class CriteriaTest {
401 public void testMatchEthTypeMethod() { 401 public void testMatchEthTypeMethod() {
402 int ethType = 12; 402 int ethType = 12;
403 Criterion matchEthType = Criteria.matchEthType(ethType); 403 Criterion matchEthType = Criteria.matchEthType(ethType);
404 - Criteria.EthTypeCriterion ethTypeCriterion = 404 + EthTypeCriterion ethTypeCriterion =
405 checkAndConvert(matchEthType, 405 checkAndConvert(matchEthType,
406 Criterion.Type.ETH_TYPE, 406 Criterion.Type.ETH_TYPE,
407 - Criteria.EthTypeCriterion.class); 407 + EthTypeCriterion.class);
408 assertThat(ethTypeCriterion.ethType(), is(equalTo(ethType))); 408 assertThat(ethTypeCriterion.ethType(), is(equalTo(ethType)));
409 } 409 }
410 410
...@@ -427,10 +427,10 @@ public class CriteriaTest { ...@@ -427,10 +427,10 @@ public class CriteriaTest {
427 @Test 427 @Test
428 public void testMatchVlanIdMethod() { 428 public void testMatchVlanIdMethod() {
429 Criterion matchVlanId = Criteria.matchVlanId(vlanId1); 429 Criterion matchVlanId = Criteria.matchVlanId(vlanId1);
430 - Criteria.VlanIdCriterion vlanIdCriterion = 430 + VlanIdCriterion vlanIdCriterion =
431 checkAndConvert(matchVlanId, 431 checkAndConvert(matchVlanId,
432 Criterion.Type.VLAN_VID, 432 Criterion.Type.VLAN_VID,
433 - Criteria.VlanIdCriterion.class); 433 + VlanIdCriterion.class);
434 assertThat(vlanIdCriterion.vlanId(), is(equalTo(vlanId1))); 434 assertThat(vlanIdCriterion.vlanId(), is(equalTo(vlanId1)));
435 } 435 }
436 436
...@@ -453,10 +453,10 @@ public class CriteriaTest { ...@@ -453,10 +453,10 @@ public class CriteriaTest {
453 @Test 453 @Test
454 public void testMatchVlanPcpMethod() { 454 public void testMatchVlanPcpMethod() {
455 Criterion matchVlanPcp = Criteria.matchVlanPcp(vlanPcp1); 455 Criterion matchVlanPcp = Criteria.matchVlanPcp(vlanPcp1);
456 - Criteria.VlanPcpCriterion vlanPcpCriterion = 456 + VlanPcpCriterion vlanPcpCriterion =
457 checkAndConvert(matchVlanPcp, 457 checkAndConvert(matchVlanPcp,
458 Criterion.Type.VLAN_PCP, 458 Criterion.Type.VLAN_PCP,
459 - Criteria.VlanPcpCriterion.class); 459 + VlanPcpCriterion.class);
460 assertThat(vlanPcpCriterion.priority(), is(equalTo(vlanPcp1))); 460 assertThat(vlanPcpCriterion.priority(), is(equalTo(vlanPcp1)));
461 } 461 }
462 462
...@@ -479,10 +479,10 @@ public class CriteriaTest { ...@@ -479,10 +479,10 @@ public class CriteriaTest {
479 @Test 479 @Test
480 public void testMatchIPDscpMethod() { 480 public void testMatchIPDscpMethod() {
481 Criterion matchIPDscp = Criteria.matchIPDscp(ipDscp1); 481 Criterion matchIPDscp = Criteria.matchIPDscp(ipDscp1);
482 - Criteria.IPDscpCriterion ipDscpCriterion = 482 + IPDscpCriterion ipDscpCriterion =
483 checkAndConvert(matchIPDscp, 483 checkAndConvert(matchIPDscp,
484 Criterion.Type.IP_DSCP, 484 Criterion.Type.IP_DSCP,
485 - Criteria.IPDscpCriterion.class); 485 + IPDscpCriterion.class);
486 assertThat(ipDscpCriterion.ipDscp(), is(equalTo(ipDscp1))); 486 assertThat(ipDscpCriterion.ipDscp(), is(equalTo(ipDscp1)));
487 } 487 }
488 488
...@@ -505,10 +505,10 @@ public class CriteriaTest { ...@@ -505,10 +505,10 @@ public class CriteriaTest {
505 @Test 505 @Test
506 public void testMatchIPEcnMethod() { 506 public void testMatchIPEcnMethod() {
507 Criterion matchIPEcn = Criteria.matchIPEcn(ipEcn1); 507 Criterion matchIPEcn = Criteria.matchIPEcn(ipEcn1);
508 - Criteria.IPEcnCriterion ipEcnCriterion = 508 + IPEcnCriterion ipEcnCriterion =
509 checkAndConvert(matchIPEcn, 509 checkAndConvert(matchIPEcn,
510 Criterion.Type.IP_ECN, 510 Criterion.Type.IP_ECN,
511 - Criteria.IPEcnCriterion.class); 511 + IPEcnCriterion.class);
512 assertThat(ipEcnCriterion.ipEcn(), is(equalTo(ipEcn1))); 512 assertThat(ipEcnCriterion.ipEcn(), is(equalTo(ipEcn1)));
513 } 513 }
514 514
...@@ -531,10 +531,10 @@ public class CriteriaTest { ...@@ -531,10 +531,10 @@ public class CriteriaTest {
531 @Test 531 @Test
532 public void testMatchIpProtocolMethod() { 532 public void testMatchIpProtocolMethod() {
533 Criterion matchIPProtocol = Criteria.matchIPProtocol(protocol1); 533 Criterion matchIPProtocol = Criteria.matchIPProtocol(protocol1);
534 - Criteria.IPProtocolCriterion ipProtocolCriterion = 534 + IPProtocolCriterion ipProtocolCriterion =
535 checkAndConvert(matchIPProtocol, 535 checkAndConvert(matchIPProtocol,
536 Criterion.Type.IP_PROTO, 536 Criterion.Type.IP_PROTO,
537 - Criteria.IPProtocolCriterion.class); 537 + IPProtocolCriterion.class);
538 assertThat(ipProtocolCriterion.protocol(), is(equalTo(protocol1))); 538 assertThat(ipProtocolCriterion.protocol(), is(equalTo(protocol1)));
539 } 539 }
540 540
...@@ -557,10 +557,10 @@ public class CriteriaTest { ...@@ -557,10 +557,10 @@ public class CriteriaTest {
557 @Test 557 @Test
558 public void testMatchIPSrcMethod() { 558 public void testMatchIPSrcMethod() {
559 Criterion matchIpSrc = Criteria.matchIPSrc(ip1); 559 Criterion matchIpSrc = Criteria.matchIPSrc(ip1);
560 - Criteria.IPCriterion ipCriterion = 560 + IPCriterion ipCriterion =
561 checkAndConvert(matchIpSrc, 561 checkAndConvert(matchIpSrc,
562 Criterion.Type.IPV4_SRC, 562 Criterion.Type.IPV4_SRC,
563 - Criteria.IPCriterion.class); 563 + IPCriterion.class);
564 assertThat(ipCriterion.ip(), is(ip1)); 564 assertThat(ipCriterion.ip(), is(ip1));
565 } 565 }
566 566
...@@ -570,10 +570,10 @@ public class CriteriaTest { ...@@ -570,10 +570,10 @@ public class CriteriaTest {
570 @Test 570 @Test
571 public void testMatchIPDstMethod() { 571 public void testMatchIPDstMethod() {
572 Criterion matchIPDst = Criteria.matchIPDst(ip1); 572 Criterion matchIPDst = Criteria.matchIPDst(ip1);
573 - Criteria.IPCriterion ipCriterion = 573 + IPCriterion ipCriterion =
574 checkAndConvert(matchIPDst, 574 checkAndConvert(matchIPDst,
575 Criterion.Type.IPV4_DST, 575 Criterion.Type.IPV4_DST,
576 - Criteria.IPCriterion.class); 576 + IPCriterion.class);
577 assertThat(ipCriterion.ip(), is(equalTo(ip1))); 577 assertThat(ipCriterion.ip(), is(equalTo(ip1)));
578 } 578 }
579 579
...@@ -583,10 +583,10 @@ public class CriteriaTest { ...@@ -583,10 +583,10 @@ public class CriteriaTest {
583 @Test 583 @Test
584 public void testMatchIPv6SrcMethod() { 584 public void testMatchIPv6SrcMethod() {
585 Criterion matchIpv6Src = Criteria.matchIPv6Src(ipv61); 585 Criterion matchIpv6Src = Criteria.matchIPv6Src(ipv61);
586 - Criteria.IPCriterion ipCriterion = 586 + IPCriterion ipCriterion =
587 checkAndConvert(matchIpv6Src, 587 checkAndConvert(matchIpv6Src,
588 Criterion.Type.IPV6_SRC, 588 Criterion.Type.IPV6_SRC,
589 - Criteria.IPCriterion.class); 589 + IPCriterion.class);
590 assertThat(ipCriterion.ip(), is(ipv61)); 590 assertThat(ipCriterion.ip(), is(ipv61));
591 } 591 }
592 592
...@@ -596,10 +596,10 @@ public class CriteriaTest { ...@@ -596,10 +596,10 @@ public class CriteriaTest {
596 @Test 596 @Test
597 public void testMatchIPv6DstMethod() { 597 public void testMatchIPv6DstMethod() {
598 Criterion matchIPv6Dst = Criteria.matchIPv6Dst(ipv61); 598 Criterion matchIPv6Dst = Criteria.matchIPv6Dst(ipv61);
599 - Criteria.IPCriterion ipCriterion = 599 + IPCriterion ipCriterion =
600 checkAndConvert(matchIPv6Dst, 600 checkAndConvert(matchIPv6Dst,
601 Criterion.Type.IPV6_DST, 601 Criterion.Type.IPV6_DST,
602 - Criteria.IPCriterion.class); 602 + IPCriterion.class);
603 assertThat(ipCriterion.ip(), is(equalTo(ipv61))); 603 assertThat(ipCriterion.ip(), is(equalTo(ipv61)));
604 } 604 }
605 605
...@@ -627,10 +627,10 @@ public class CriteriaTest { ...@@ -627,10 +627,10 @@ public class CriteriaTest {
627 @Test 627 @Test
628 public void testMatchTcpSrcMethod() { 628 public void testMatchTcpSrcMethod() {
629 Criterion matchTcpSrc = Criteria.matchTcpSrc(1); 629 Criterion matchTcpSrc = Criteria.matchTcpSrc(1);
630 - Criteria.TcpPortCriterion tcpPortCriterion = 630 + TcpPortCriterion tcpPortCriterion =
631 checkAndConvert(matchTcpSrc, 631 checkAndConvert(matchTcpSrc,
632 Criterion.Type.TCP_SRC, 632 Criterion.Type.TCP_SRC,
633 - Criteria.TcpPortCriterion.class); 633 + TcpPortCriterion.class);
634 assertThat(tcpPortCriterion.tcpPort(), is(equalTo(1))); 634 assertThat(tcpPortCriterion.tcpPort(), is(equalTo(1)));
635 } 635 }
636 636
...@@ -640,10 +640,10 @@ public class CriteriaTest { ...@@ -640,10 +640,10 @@ public class CriteriaTest {
640 @Test 640 @Test
641 public void testMatchTcpDstMethod() { 641 public void testMatchTcpDstMethod() {
642 Criterion matchTcpDst = Criteria.matchTcpDst(1); 642 Criterion matchTcpDst = Criteria.matchTcpDst(1);
643 - Criteria.TcpPortCriterion tcpPortCriterion = 643 + TcpPortCriterion tcpPortCriterion =
644 checkAndConvert(matchTcpDst, 644 checkAndConvert(matchTcpDst,
645 Criterion.Type.TCP_DST, 645 Criterion.Type.TCP_DST,
646 - Criteria.TcpPortCriterion.class); 646 + TcpPortCriterion.class);
647 assertThat(tcpPortCriterion.tcpPort(), is(equalTo(1))); 647 assertThat(tcpPortCriterion.tcpPort(), is(equalTo(1)));
648 } 648 }
649 649
...@@ -666,10 +666,10 @@ public class CriteriaTest { ...@@ -666,10 +666,10 @@ public class CriteriaTest {
666 @Test 666 @Test
667 public void testMatchUdpSrcMethod() { 667 public void testMatchUdpSrcMethod() {
668 Criterion matchUdpSrc = Criteria.matchUdpSrc(1); 668 Criterion matchUdpSrc = Criteria.matchUdpSrc(1);
669 - Criteria.UdpPortCriterion udpPortCriterion = 669 + UdpPortCriterion udpPortCriterion =
670 checkAndConvert(matchUdpSrc, 670 checkAndConvert(matchUdpSrc,
671 Criterion.Type.UDP_SRC, 671 Criterion.Type.UDP_SRC,
672 - Criteria.UdpPortCriterion.class); 672 + UdpPortCriterion.class);
673 assertThat(udpPortCriterion.udpPort(), is(equalTo(1))); 673 assertThat(udpPortCriterion.udpPort(), is(equalTo(1)));
674 } 674 }
675 675
...@@ -679,10 +679,10 @@ public class CriteriaTest { ...@@ -679,10 +679,10 @@ public class CriteriaTest {
679 @Test 679 @Test
680 public void testMatchUdpDstMethod() { 680 public void testMatchUdpDstMethod() {
681 Criterion matchUdpDst = Criteria.matchUdpDst(1); 681 Criterion matchUdpDst = Criteria.matchUdpDst(1);
682 - Criteria.UdpPortCriterion udpPortCriterion = 682 + UdpPortCriterion udpPortCriterion =
683 checkAndConvert(matchUdpDst, 683 checkAndConvert(matchUdpDst,
684 Criterion.Type.UDP_DST, 684 Criterion.Type.UDP_DST,
685 - Criteria.UdpPortCriterion.class); 685 + UdpPortCriterion.class);
686 assertThat(udpPortCriterion.udpPort(), is(equalTo(1))); 686 assertThat(udpPortCriterion.udpPort(), is(equalTo(1)));
687 } 687 }
688 688
...@@ -705,10 +705,10 @@ public class CriteriaTest { ...@@ -705,10 +705,10 @@ public class CriteriaTest {
705 @Test 705 @Test
706 public void testMatchSctpSrcMethod() { 706 public void testMatchSctpSrcMethod() {
707 Criterion matchSctpSrc = Criteria.matchSctpSrc(1); 707 Criterion matchSctpSrc = Criteria.matchSctpSrc(1);
708 - Criteria.SctpPortCriterion sctpPortCriterion = 708 + SctpPortCriterion sctpPortCriterion =
709 checkAndConvert(matchSctpSrc, 709 checkAndConvert(matchSctpSrc,
710 Criterion.Type.SCTP_SRC, 710 Criterion.Type.SCTP_SRC,
711 - Criteria.SctpPortCriterion.class); 711 + SctpPortCriterion.class);
712 assertThat(sctpPortCriterion.sctpPort(), is(equalTo(1))); 712 assertThat(sctpPortCriterion.sctpPort(), is(equalTo(1)));
713 } 713 }
714 714
...@@ -718,10 +718,10 @@ public class CriteriaTest { ...@@ -718,10 +718,10 @@ public class CriteriaTest {
718 @Test 718 @Test
719 public void testMatchSctpDstMethod() { 719 public void testMatchSctpDstMethod() {
720 Criterion matchSctpDst = Criteria.matchSctpDst(1); 720 Criterion matchSctpDst = Criteria.matchSctpDst(1);
721 - Criteria.SctpPortCriterion sctpPortCriterion = 721 + SctpPortCriterion sctpPortCriterion =
722 checkAndConvert(matchSctpDst, 722 checkAndConvert(matchSctpDst,
723 Criterion.Type.SCTP_DST, 723 Criterion.Type.SCTP_DST,
724 - Criteria.SctpPortCriterion.class); 724 + SctpPortCriterion.class);
725 assertThat(sctpPortCriterion.sctpPort(), is(equalTo(1))); 725 assertThat(sctpPortCriterion.sctpPort(), is(equalTo(1)));
726 } 726 }
727 727
...@@ -745,10 +745,10 @@ public class CriteriaTest { ...@@ -745,10 +745,10 @@ public class CriteriaTest {
745 public void testMatchIcmpTypeMethod() { 745 public void testMatchIcmpTypeMethod() {
746 short icmpType = 12; 746 short icmpType = 12;
747 Criterion matchIcmpType = Criteria.matchIcmpType(icmpType); 747 Criterion matchIcmpType = Criteria.matchIcmpType(icmpType);
748 - Criteria.IcmpTypeCriterion icmpTypeCriterion = 748 + IcmpTypeCriterion icmpTypeCriterion =
749 checkAndConvert(matchIcmpType, 749 checkAndConvert(matchIcmpType,
750 Criterion.Type.ICMPV4_TYPE, 750 Criterion.Type.ICMPV4_TYPE,
751 - Criteria.IcmpTypeCriterion.class); 751 + IcmpTypeCriterion.class);
752 assertThat(icmpTypeCriterion.icmpType(), is(equalTo(icmpType))); 752 assertThat(icmpTypeCriterion.icmpType(), is(equalTo(icmpType)));
753 } 753 }
754 754
...@@ -772,10 +772,10 @@ public class CriteriaTest { ...@@ -772,10 +772,10 @@ public class CriteriaTest {
772 public void testMatchIcmpCodeMethod() { 772 public void testMatchIcmpCodeMethod() {
773 short icmpCode = 12; 773 short icmpCode = 12;
774 Criterion matchIcmpCode = Criteria.matchIcmpCode(icmpCode); 774 Criterion matchIcmpCode = Criteria.matchIcmpCode(icmpCode);
775 - Criteria.IcmpCodeCriterion icmpCodeCriterion = 775 + IcmpCodeCriterion icmpCodeCriterion =
776 checkAndConvert(matchIcmpCode, 776 checkAndConvert(matchIcmpCode,
777 Criterion.Type.ICMPV4_CODE, 777 Criterion.Type.ICMPV4_CODE,
778 - Criteria.IcmpCodeCriterion.class); 778 + IcmpCodeCriterion.class);
779 assertThat(icmpCodeCriterion.icmpCode(), is(equalTo(icmpCode))); 779 assertThat(icmpCodeCriterion.icmpCode(), is(equalTo(icmpCode)));
780 } 780 }
781 781
...@@ -799,10 +799,10 @@ public class CriteriaTest { ...@@ -799,10 +799,10 @@ public class CriteriaTest {
799 public void testMatchIPv6FlowLabelMethod() { 799 public void testMatchIPv6FlowLabelMethod() {
800 int flowLabel = 12; 800 int flowLabel = 12;
801 Criterion matchFlowLabel = Criteria.matchIPv6FlowLabel(flowLabel); 801 Criterion matchFlowLabel = Criteria.matchIPv6FlowLabel(flowLabel);
802 - Criteria.IPv6FlowLabelCriterion flowLabelCriterion = 802 + IPv6FlowLabelCriterion flowLabelCriterion =
803 checkAndConvert(matchFlowLabel, 803 checkAndConvert(matchFlowLabel,
804 Criterion.Type.IPV6_FLABEL, 804 Criterion.Type.IPV6_FLABEL,
805 - Criteria.IPv6FlowLabelCriterion.class); 805 + IPv6FlowLabelCriterion.class);
806 assertThat(flowLabelCriterion.flowLabel(), is(equalTo(flowLabel))); 806 assertThat(flowLabelCriterion.flowLabel(), is(equalTo(flowLabel)));
807 } 807 }
808 808
...@@ -826,10 +826,10 @@ public class CriteriaTest { ...@@ -826,10 +826,10 @@ public class CriteriaTest {
826 public void testMatchIcmpv6TypeMethod() { 826 public void testMatchIcmpv6TypeMethod() {
827 short icmpv6Type = 12; 827 short icmpv6Type = 12;
828 Criterion matchIcmpv6Type = Criteria.matchIcmpv6Type(icmpv6Type); 828 Criterion matchIcmpv6Type = Criteria.matchIcmpv6Type(icmpv6Type);
829 - Criteria.Icmpv6TypeCriterion icmpv6TypeCriterion = 829 + Icmpv6TypeCriterion icmpv6TypeCriterion =
830 checkAndConvert(matchIcmpv6Type, 830 checkAndConvert(matchIcmpv6Type,
831 Criterion.Type.ICMPV6_TYPE, 831 Criterion.Type.ICMPV6_TYPE,
832 - Criteria.Icmpv6TypeCriterion.class); 832 + Icmpv6TypeCriterion.class);
833 assertThat(icmpv6TypeCriterion.icmpv6Type(), is(equalTo(icmpv6Type))); 833 assertThat(icmpv6TypeCriterion.icmpv6Type(), is(equalTo(icmpv6Type)));
834 } 834 }
835 835
...@@ -853,10 +853,10 @@ public class CriteriaTest { ...@@ -853,10 +853,10 @@ public class CriteriaTest {
853 public void testMatchIcmpv6CodeMethod() { 853 public void testMatchIcmpv6CodeMethod() {
854 short icmpv6Code = 12; 854 short icmpv6Code = 12;
855 Criterion matchIcmpv6Code = Criteria.matchIcmpv6Code(icmpv6Code); 855 Criterion matchIcmpv6Code = Criteria.matchIcmpv6Code(icmpv6Code);
856 - Criteria.Icmpv6CodeCriterion icmpv6CodeCriterion = 856 + Icmpv6CodeCriterion icmpv6CodeCriterion =
857 checkAndConvert(matchIcmpv6Code, 857 checkAndConvert(matchIcmpv6Code,
858 Criterion.Type.ICMPV6_CODE, 858 Criterion.Type.ICMPV6_CODE,
859 - Criteria.Icmpv6CodeCriterion.class); 859 + Icmpv6CodeCriterion.class);
860 assertThat(icmpv6CodeCriterion.icmpv6Code(), is(equalTo(icmpv6Code))); 860 assertThat(icmpv6CodeCriterion.icmpv6Code(), is(equalTo(icmpv6Code)));
861 } 861 }
862 862
...@@ -880,10 +880,10 @@ public class CriteriaTest { ...@@ -880,10 +880,10 @@ public class CriteriaTest {
880 public void testMatchIPv6NDTargetAddressMethod() { 880 public void testMatchIPv6NDTargetAddressMethod() {
881 Criterion matchTargetAddress = 881 Criterion matchTargetAddress =
882 Criteria.matchIPv6NDTargetAddress(ip6TargetAddress1); 882 Criteria.matchIPv6NDTargetAddress(ip6TargetAddress1);
883 - Criteria.IPv6NDTargetAddressCriterion targetAddressCriterion = 883 + IPv6NDTargetAddressCriterion targetAddressCriterion =
884 checkAndConvert(matchTargetAddress, 884 checkAndConvert(matchTargetAddress,
885 Criterion.Type.IPV6_ND_TARGET, 885 Criterion.Type.IPV6_ND_TARGET,
886 - Criteria.IPv6NDTargetAddressCriterion.class); 886 + IPv6NDTargetAddressCriterion.class);
887 assertThat(targetAddressCriterion.targetAddress(), 887 assertThat(targetAddressCriterion.targetAddress(),
888 is(ip6TargetAddress1)); 888 is(ip6TargetAddress1));
889 } 889 }
...@@ -909,10 +909,10 @@ public class CriteriaTest { ...@@ -909,10 +909,10 @@ public class CriteriaTest {
909 public void testMatchIPv6NDSourceLinkLayerAddressMethod() { 909 public void testMatchIPv6NDSourceLinkLayerAddressMethod() {
910 Criterion matchSrcLlAddr = 910 Criterion matchSrcLlAddr =
911 Criteria.matchIPv6NDSourceLinkLayerAddress(llMac1); 911 Criteria.matchIPv6NDSourceLinkLayerAddress(llMac1);
912 - Criteria.IPv6NDLinkLayerAddressCriterion srcLlCriterion = 912 + IPv6NDLinkLayerAddressCriterion srcLlCriterion =
913 checkAndConvert(matchSrcLlAddr, 913 checkAndConvert(matchSrcLlAddr,
914 Criterion.Type.IPV6_ND_SLL, 914 Criterion.Type.IPV6_ND_SLL,
915 - Criteria.IPv6NDLinkLayerAddressCriterion.class); 915 + IPv6NDLinkLayerAddressCriterion.class);
916 assertThat(srcLlCriterion.mac(), is(equalTo(llMac1))); 916 assertThat(srcLlCriterion.mac(), is(equalTo(llMac1)));
917 } 917 }
918 918
...@@ -923,10 +923,10 @@ public class CriteriaTest { ...@@ -923,10 +923,10 @@ public class CriteriaTest {
923 public void testMatchIPv6NDTargetLinkLayerAddressMethod() { 923 public void testMatchIPv6NDTargetLinkLayerAddressMethod() {
924 Criterion matchTargetLlAddr = 924 Criterion matchTargetLlAddr =
925 Criteria.matchIPv6NDTargetLinkLayerAddress(llMac1); 925 Criteria.matchIPv6NDTargetLinkLayerAddress(llMac1);
926 - Criteria.IPv6NDLinkLayerAddressCriterion targetLlCriterion = 926 + IPv6NDLinkLayerAddressCriterion targetLlCriterion =
927 checkAndConvert(matchTargetLlAddr, 927 checkAndConvert(matchTargetLlAddr,
928 Criterion.Type.IPV6_ND_TLL, 928 Criterion.Type.IPV6_ND_TLL,
929 - Criteria.IPv6NDLinkLayerAddressCriterion.class); 929 + IPv6NDLinkLayerAddressCriterion.class);
930 assertThat(targetLlCriterion.mac(), is(equalTo(llMac1))); 930 assertThat(targetLlCriterion.mac(), is(equalTo(llMac1)));
931 } 931 }
932 932
...@@ -954,10 +954,10 @@ public class CriteriaTest { ...@@ -954,10 +954,10 @@ public class CriteriaTest {
954 @Test 954 @Test
955 public void testMatchMplsLabelMethod() { 955 public void testMatchMplsLabelMethod() {
956 Criterion matchMplsLabel = Criteria.matchMplsLabel(mpls1); 956 Criterion matchMplsLabel = Criteria.matchMplsLabel(mpls1);
957 - Criteria.MplsCriterion mplsCriterion = 957 + MplsCriterion mplsCriterion =
958 checkAndConvert(matchMplsLabel, 958 checkAndConvert(matchMplsLabel,
959 Criterion.Type.MPLS_LABEL, 959 Criterion.Type.MPLS_LABEL,
960 - Criteria.MplsCriterion.class); 960 + MplsCriterion.class);
961 assertThat(mplsCriterion.label(), is(equalTo(mpls1))); 961 assertThat(mplsCriterion.label(), is(equalTo(mpls1)));
962 } 962 }
963 963
...@@ -981,10 +981,10 @@ public class CriteriaTest { ...@@ -981,10 +981,10 @@ public class CriteriaTest {
981 public void testMatchIPv6ExthdrFlagsMethod() { 981 public void testMatchIPv6ExthdrFlagsMethod() {
982 Criterion matchExthdrFlags = 982 Criterion matchExthdrFlags =
983 Criteria.matchIPv6ExthdrFlags(ipv6ExthdrFlags1); 983 Criteria.matchIPv6ExthdrFlags(ipv6ExthdrFlags1);
984 - Criteria.IPv6ExthdrFlagsCriterion exthdrFlagsCriterion = 984 + IPv6ExthdrFlagsCriterion exthdrFlagsCriterion =
985 checkAndConvert(matchExthdrFlags, 985 checkAndConvert(matchExthdrFlags,
986 Criterion.Type.IPV6_EXTHDR, 986 Criterion.Type.IPV6_EXTHDR,
987 - Criteria.IPv6ExthdrFlagsCriterion.class); 987 + IPv6ExthdrFlagsCriterion.class);
988 assertThat(exthdrFlagsCriterion.exthdrFlags(), 988 assertThat(exthdrFlagsCriterion.exthdrFlags(),
989 is(equalTo(ipv6ExthdrFlags1))); 989 is(equalTo(ipv6ExthdrFlags1)));
990 } 990 }
...@@ -1009,10 +1009,10 @@ public class CriteriaTest { ...@@ -1009,10 +1009,10 @@ public class CriteriaTest {
1009 @Test 1009 @Test
1010 public void testMatchLambdaMethod() { 1010 public void testMatchLambdaMethod() {
1011 Criterion matchLambda = Criteria.matchLambda(lambda1); 1011 Criterion matchLambda = Criteria.matchLambda(lambda1);
1012 - Criteria.LambdaCriterion lambdaCriterion = 1012 + LambdaCriterion lambdaCriterion =
1013 checkAndConvert(matchLambda, 1013 checkAndConvert(matchLambda,
1014 Criterion.Type.OCH_SIGID, 1014 Criterion.Type.OCH_SIGID,
1015 - Criteria.LambdaCriterion.class); 1015 + LambdaCriterion.class);
1016 assertThat(lambdaCriterion.lambda(), is(equalTo(lambda1))); 1016 assertThat(lambdaCriterion.lambda(), is(equalTo(lambda1)));
1017 } 1017 }
1018 1018
...@@ -1035,10 +1035,10 @@ public class CriteriaTest { ...@@ -1035,10 +1035,10 @@ public class CriteriaTest {
1035 @Test 1035 @Test
1036 public void testMatchOpticalSignalTypeMethod() { 1036 public void testMatchOpticalSignalTypeMethod() {
1037 Criterion matchLambda = Criteria.matchOpticalSignalType(signalLambda1); 1037 Criterion matchLambda = Criteria.matchOpticalSignalType(signalLambda1);
1038 - Criteria.OpticalSignalTypeCriterion opticalSignalTypeCriterion = 1038 + OpticalSignalTypeCriterion opticalSignalTypeCriterion =
1039 checkAndConvert(matchLambda, 1039 checkAndConvert(matchLambda,
1040 Criterion.Type.OCH_SIGTYPE, 1040 Criterion.Type.OCH_SIGTYPE,
1041 - Criteria.OpticalSignalTypeCriterion.class); 1041 + OpticalSignalTypeCriterion.class);
1042 assertThat(opticalSignalTypeCriterion.signalType(), is(equalTo(signalLambda1))); 1042 assertThat(opticalSignalTypeCriterion.signalType(), is(equalTo(signalLambda1)));
1043 } 1043 }
1044 1044
......
...@@ -19,8 +19,31 @@ import java.util.EnumMap; ...@@ -19,8 +19,31 @@ import java.util.EnumMap;
19 19
20 import org.onosproject.codec.CodecContext; 20 import org.onosproject.codec.CodecContext;
21 import org.onosproject.codec.JsonCodec; 21 import org.onosproject.codec.JsonCodec;
22 -import org.onosproject.net.flow.criteria.Criteria;
23 import org.onosproject.net.flow.criteria.Criterion; 22 import org.onosproject.net.flow.criteria.Criterion;
23 +import org.onosproject.net.flow.criteria.EthCriterion;
24 +import org.onosproject.net.flow.criteria.EthTypeCriterion;
25 +import org.onosproject.net.flow.criteria.IPCriterion;
26 +import org.onosproject.net.flow.criteria.IPDscpCriterion;
27 +import org.onosproject.net.flow.criteria.IPEcnCriterion;
28 +import org.onosproject.net.flow.criteria.IPProtocolCriterion;
29 +import org.onosproject.net.flow.criteria.IPv6ExthdrFlagsCriterion;
30 +import org.onosproject.net.flow.criteria.IPv6FlowLabelCriterion;
31 +import org.onosproject.net.flow.criteria.IPv6NDLinkLayerAddressCriterion;
32 +import org.onosproject.net.flow.criteria.IPv6NDTargetAddressCriterion;
33 +import org.onosproject.net.flow.criteria.IcmpCodeCriterion;
34 +import org.onosproject.net.flow.criteria.IcmpTypeCriterion;
35 +import org.onosproject.net.flow.criteria.Icmpv6CodeCriterion;
36 +import org.onosproject.net.flow.criteria.Icmpv6TypeCriterion;
37 +import org.onosproject.net.flow.criteria.LambdaCriterion;
38 +import org.onosproject.net.flow.criteria.MetadataCriterion;
39 +import org.onosproject.net.flow.criteria.MplsCriterion;
40 +import org.onosproject.net.flow.criteria.OpticalSignalTypeCriterion;
41 +import org.onosproject.net.flow.criteria.PortCriterion;
42 +import org.onosproject.net.flow.criteria.SctpPortCriterion;
43 +import org.onosproject.net.flow.criteria.TcpPortCriterion;
44 +import org.onosproject.net.flow.criteria.UdpPortCriterion;
45 +import org.onosproject.net.flow.criteria.VlanIdCriterion;
46 +import org.onosproject.net.flow.criteria.VlanPcpCriterion;
24 import org.slf4j.Logger; 47 import org.slf4j.Logger;
25 import org.slf4j.LoggerFactory; 48 import org.slf4j.LoggerFactory;
26 49
...@@ -107,7 +130,7 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -107,7 +130,7 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
107 private static class FormatInPort implements CriterionTypeFormatter { 130 private static class FormatInPort implements CriterionTypeFormatter {
108 @Override 131 @Override
109 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 132 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
110 - final Criteria.PortCriterion portCriterion = (Criteria.PortCriterion) criterion; 133 + final PortCriterion portCriterion = (PortCriterion) criterion;
111 return root.put("port", portCriterion.port().toLong()); 134 return root.put("port", portCriterion.port().toLong());
112 } 135 }
113 } 136 }
...@@ -115,8 +138,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -115,8 +138,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
115 private static class FormatMetadata implements CriterionTypeFormatter { 138 private static class FormatMetadata implements CriterionTypeFormatter {
116 @Override 139 @Override
117 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 140 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
118 - final Criteria.MetadataCriterion metadataCriterion = 141 + final MetadataCriterion metadataCriterion =
119 - (Criteria.MetadataCriterion) criterion; 142 + (MetadataCriterion) criterion;
120 return root.put("metadata", metadataCriterion.metadata()); 143 return root.put("metadata", metadataCriterion.metadata());
121 } 144 }
122 } 145 }
...@@ -124,7 +147,7 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -124,7 +147,7 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
124 private static class FormatEth implements CriterionTypeFormatter { 147 private static class FormatEth implements CriterionTypeFormatter {
125 @Override 148 @Override
126 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 149 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
127 - final Criteria.EthCriterion ethCriterion = (Criteria.EthCriterion) criterion; 150 + final EthCriterion ethCriterion = (EthCriterion) criterion;
128 return root.put("mac", ethCriterion.mac().toString()); 151 return root.put("mac", ethCriterion.mac().toString());
129 } 152 }
130 } 153 }
...@@ -132,8 +155,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -132,8 +155,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
132 private static class FormatEthType implements CriterionTypeFormatter { 155 private static class FormatEthType implements CriterionTypeFormatter {
133 @Override 156 @Override
134 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 157 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
135 - final Criteria.EthTypeCriterion ethTypeCriterion = 158 + final EthTypeCriterion ethTypeCriterion =
136 - (Criteria.EthTypeCriterion) criterion; 159 + (EthTypeCriterion) criterion;
137 return root.put("ethType", ethTypeCriterion.ethType()); 160 return root.put("ethType", ethTypeCriterion.ethType());
138 } 161 }
139 } 162 }
...@@ -141,8 +164,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -141,8 +164,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
141 private static class FormatVlanVid implements CriterionTypeFormatter { 164 private static class FormatVlanVid implements CriterionTypeFormatter {
142 @Override 165 @Override
143 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 166 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
144 - final Criteria.VlanIdCriterion vlanIdCriterion = 167 + final VlanIdCriterion vlanIdCriterion =
145 - (Criteria.VlanIdCriterion) criterion; 168 + (VlanIdCriterion) criterion;
146 return root.put("vlanId", vlanIdCriterion.vlanId().toShort()); 169 return root.put("vlanId", vlanIdCriterion.vlanId().toShort());
147 } 170 }
148 } 171 }
...@@ -150,8 +173,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -150,8 +173,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
150 private static class FormatVlanPcp implements CriterionTypeFormatter { 173 private static class FormatVlanPcp implements CriterionTypeFormatter {
151 @Override 174 @Override
152 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 175 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
153 - final Criteria.VlanPcpCriterion vlanPcpCriterion = 176 + final VlanPcpCriterion vlanPcpCriterion =
154 - (Criteria.VlanPcpCriterion) criterion; 177 + (VlanPcpCriterion) criterion;
155 return root.put("priority", vlanPcpCriterion.priority()); 178 return root.put("priority", vlanPcpCriterion.priority());
156 } 179 }
157 } 180 }
...@@ -159,8 +182,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -159,8 +182,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
159 private static class FormatIpDscp implements CriterionTypeFormatter { 182 private static class FormatIpDscp implements CriterionTypeFormatter {
160 @Override 183 @Override
161 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 184 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
162 - final Criteria.IPDscpCriterion ipDscpCriterion = 185 + final IPDscpCriterion ipDscpCriterion =
163 - (Criteria.IPDscpCriterion) criterion; 186 + (IPDscpCriterion) criterion;
164 return root.put("ipDscp", ipDscpCriterion.ipDscp()); 187 return root.put("ipDscp", ipDscpCriterion.ipDscp());
165 } 188 }
166 } 189 }
...@@ -168,8 +191,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -168,8 +191,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
168 private static class FormatIpEcn implements CriterionTypeFormatter { 191 private static class FormatIpEcn implements CriterionTypeFormatter {
169 @Override 192 @Override
170 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 193 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
171 - final Criteria.IPEcnCriterion ipEcnCriterion = 194 + final IPEcnCriterion ipEcnCriterion =
172 - (Criteria.IPEcnCriterion) criterion; 195 + (IPEcnCriterion) criterion;
173 return root.put("ipEcn", ipEcnCriterion.ipEcn()); 196 return root.put("ipEcn", ipEcnCriterion.ipEcn());
174 } 197 }
175 } 198 }
...@@ -177,8 +200,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -177,8 +200,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
177 private static class FormatIpProto implements CriterionTypeFormatter { 200 private static class FormatIpProto implements CriterionTypeFormatter {
178 @Override 201 @Override
179 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 202 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
180 - final Criteria.IPProtocolCriterion iPProtocolCriterion = 203 + final IPProtocolCriterion iPProtocolCriterion =
181 - (Criteria.IPProtocolCriterion) criterion; 204 + (IPProtocolCriterion) criterion;
182 return root.put("protocol", iPProtocolCriterion.protocol()); 205 return root.put("protocol", iPProtocolCriterion.protocol());
183 } 206 }
184 } 207 }
...@@ -186,7 +209,7 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -186,7 +209,7 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
186 private static class FormatIp implements CriterionTypeFormatter { 209 private static class FormatIp implements CriterionTypeFormatter {
187 @Override 210 @Override
188 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 211 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
189 - final Criteria.IPCriterion iPCriterion = (Criteria.IPCriterion) criterion; 212 + final IPCriterion iPCriterion = (IPCriterion) criterion;
190 return root.put("ip", iPCriterion.ip().toString()); 213 return root.put("ip", iPCriterion.ip().toString());
191 } 214 }
192 } 215 }
...@@ -194,8 +217,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -194,8 +217,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
194 private static class FormatTcp implements CriterionTypeFormatter { 217 private static class FormatTcp implements CriterionTypeFormatter {
195 @Override 218 @Override
196 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 219 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
197 - final Criteria.TcpPortCriterion tcpPortCriterion = 220 + final TcpPortCriterion tcpPortCriterion =
198 - (Criteria.TcpPortCriterion) criterion; 221 + (TcpPortCriterion) criterion;
199 return root.put("tcpPort", tcpPortCriterion.tcpPort()); 222 return root.put("tcpPort", tcpPortCriterion.tcpPort());
200 } 223 }
201 } 224 }
...@@ -203,8 +226,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -203,8 +226,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
203 private static class FormatUdp implements CriterionTypeFormatter { 226 private static class FormatUdp implements CriterionTypeFormatter {
204 @Override 227 @Override
205 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 228 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
206 - final Criteria.UdpPortCriterion udpPortCriterion = 229 + final UdpPortCriterion udpPortCriterion =
207 - (Criteria.UdpPortCriterion) criterion; 230 + (UdpPortCriterion) criterion;
208 return root.put("udpPort", udpPortCriterion.udpPort()); 231 return root.put("udpPort", udpPortCriterion.udpPort());
209 } 232 }
210 } 233 }
...@@ -212,8 +235,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -212,8 +235,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
212 private static class FormatSctp implements CriterionTypeFormatter { 235 private static class FormatSctp implements CriterionTypeFormatter {
213 @Override 236 @Override
214 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 237 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
215 - final Criteria.SctpPortCriterion sctpPortCriterion = 238 + final SctpPortCriterion sctpPortCriterion =
216 - (Criteria.SctpPortCriterion) criterion; 239 + (SctpPortCriterion) criterion;
217 return root.put("sctpPort", sctpPortCriterion.sctpPort()); 240 return root.put("sctpPort", sctpPortCriterion.sctpPort());
218 } 241 }
219 } 242 }
...@@ -221,8 +244,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -221,8 +244,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
221 private static class FormatIcmpV4Type implements CriterionTypeFormatter { 244 private static class FormatIcmpV4Type implements CriterionTypeFormatter {
222 @Override 245 @Override
223 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 246 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
224 - final Criteria.IcmpTypeCriterion icmpTypeCriterion = 247 + final IcmpTypeCriterion icmpTypeCriterion =
225 - (Criteria.IcmpTypeCriterion) criterion; 248 + (IcmpTypeCriterion) criterion;
226 return root.put("icmpType", icmpTypeCriterion.icmpType()); 249 return root.put("icmpType", icmpTypeCriterion.icmpType());
227 } 250 }
228 } 251 }
...@@ -230,8 +253,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -230,8 +253,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
230 private static class FormatIcmpV4Code implements CriterionTypeFormatter { 253 private static class FormatIcmpV4Code implements CriterionTypeFormatter {
231 @Override 254 @Override
232 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 255 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
233 - final Criteria.IcmpCodeCriterion icmpCodeCriterion = 256 + final IcmpCodeCriterion icmpCodeCriterion =
234 - (Criteria.IcmpCodeCriterion) criterion; 257 + (IcmpCodeCriterion) criterion;
235 return root.put("icmpCode", icmpCodeCriterion.icmpCode()); 258 return root.put("icmpCode", icmpCodeCriterion.icmpCode());
236 } 259 }
237 } 260 }
...@@ -239,8 +262,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -239,8 +262,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
239 private static class FormatIpV6FLabel implements CriterionTypeFormatter { 262 private static class FormatIpV6FLabel implements CriterionTypeFormatter {
240 @Override 263 @Override
241 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 264 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
242 - final Criteria.IPv6FlowLabelCriterion ipv6FlowLabelCriterion = 265 + final IPv6FlowLabelCriterion ipv6FlowLabelCriterion =
243 - (Criteria.IPv6FlowLabelCriterion) criterion; 266 + (IPv6FlowLabelCriterion) criterion;
244 return root.put("flowLabel", ipv6FlowLabelCriterion.flowLabel()); 267 return root.put("flowLabel", ipv6FlowLabelCriterion.flowLabel());
245 } 268 }
246 } 269 }
...@@ -248,8 +271,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -248,8 +271,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
248 private static class FormatIcmpV6Type implements CriterionTypeFormatter { 271 private static class FormatIcmpV6Type implements CriterionTypeFormatter {
249 @Override 272 @Override
250 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 273 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
251 - final Criteria.Icmpv6TypeCriterion icmpv6TypeCriterion = 274 + final Icmpv6TypeCriterion icmpv6TypeCriterion =
252 - (Criteria.Icmpv6TypeCriterion) criterion; 275 + (Icmpv6TypeCriterion) criterion;
253 return root.put("icmpv6Type", icmpv6TypeCriterion.icmpv6Type()); 276 return root.put("icmpv6Type", icmpv6TypeCriterion.icmpv6Type());
254 } 277 }
255 } 278 }
...@@ -257,8 +280,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -257,8 +280,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
257 private static class FormatIcmpV6Code implements CriterionTypeFormatter { 280 private static class FormatIcmpV6Code implements CriterionTypeFormatter {
258 @Override 281 @Override
259 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 282 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
260 - final Criteria.Icmpv6CodeCriterion icmpv6CodeCriterion = 283 + final Icmpv6CodeCriterion icmpv6CodeCriterion =
261 - (Criteria.Icmpv6CodeCriterion) criterion; 284 + (Icmpv6CodeCriterion) criterion;
262 return root.put("icmpv6Code", icmpv6CodeCriterion.icmpv6Code()); 285 return root.put("icmpv6Code", icmpv6CodeCriterion.icmpv6Code());
263 } 286 }
264 } 287 }
...@@ -266,8 +289,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -266,8 +289,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
266 private static class FormatV6NDTarget implements CriterionTypeFormatter { 289 private static class FormatV6NDTarget implements CriterionTypeFormatter {
267 @Override 290 @Override
268 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 291 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
269 - final Criteria.IPv6NDTargetAddressCriterion ipv6NDTargetAddressCriterion 292 + final IPv6NDTargetAddressCriterion ipv6NDTargetAddressCriterion
270 - = (Criteria.IPv6NDTargetAddressCriterion) criterion; 293 + = (IPv6NDTargetAddressCriterion) criterion;
271 return root.put("targetAddress", ipv6NDTargetAddressCriterion.targetAddress().toString()); 294 return root.put("targetAddress", ipv6NDTargetAddressCriterion.targetAddress().toString());
272 } 295 }
273 } 296 }
...@@ -275,8 +298,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -275,8 +298,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
275 private static class FormatV6NDTll implements CriterionTypeFormatter { 298 private static class FormatV6NDTll implements CriterionTypeFormatter {
276 @Override 299 @Override
277 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 300 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
278 - final Criteria.IPv6NDLinkLayerAddressCriterion ipv6NDLinkLayerAddressCriterion 301 + final IPv6NDLinkLayerAddressCriterion ipv6NDLinkLayerAddressCriterion
279 - = (Criteria.IPv6NDLinkLayerAddressCriterion) criterion; 302 + = (IPv6NDLinkLayerAddressCriterion) criterion;
280 return root.put("mac", ipv6NDLinkLayerAddressCriterion.mac().toString()); 303 return root.put("mac", ipv6NDLinkLayerAddressCriterion.mac().toString());
281 } 304 }
282 } 305 }
...@@ -284,8 +307,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -284,8 +307,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
284 private static class FormatMplsLabel implements CriterionTypeFormatter { 307 private static class FormatMplsLabel implements CriterionTypeFormatter {
285 @Override 308 @Override
286 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 309 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
287 - final Criteria.MplsCriterion mplsCriterion = 310 + final MplsCriterion mplsCriterion =
288 - (Criteria.MplsCriterion) criterion; 311 + (MplsCriterion) criterion;
289 return root.put("label", mplsCriterion.label().toInt()); 312 return root.put("label", mplsCriterion.label().toInt());
290 } 313 }
291 } 314 }
...@@ -293,8 +316,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -293,8 +316,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
293 private static class FormatIpV6Exthdr implements CriterionTypeFormatter { 316 private static class FormatIpV6Exthdr implements CriterionTypeFormatter {
294 @Override 317 @Override
295 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 318 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
296 - final Criteria.IPv6ExthdrFlagsCriterion exthdrCriterion = 319 + final IPv6ExthdrFlagsCriterion exthdrCriterion =
297 - (Criteria.IPv6ExthdrFlagsCriterion) criterion; 320 + (IPv6ExthdrFlagsCriterion) criterion;
298 return root.put("exthdrFlags", exthdrCriterion.exthdrFlags()); 321 return root.put("exthdrFlags", exthdrCriterion.exthdrFlags());
299 } 322 }
300 } 323 }
...@@ -302,8 +325,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -302,8 +325,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
302 private static class FormatOchSigId implements CriterionTypeFormatter { 325 private static class FormatOchSigId implements CriterionTypeFormatter {
303 @Override 326 @Override
304 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 327 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
305 - final Criteria.LambdaCriterion lambdaCriterion = 328 + final LambdaCriterion lambdaCriterion =
306 - (Criteria.LambdaCriterion) criterion; 329 + (LambdaCriterion) criterion;
307 return root.put("lambda", lambdaCriterion.lambda()); 330 return root.put("lambda", lambdaCriterion.lambda());
308 } 331 }
309 } 332 }
...@@ -311,8 +334,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> { ...@@ -311,8 +334,8 @@ public final class CriterionCodec extends JsonCodec<Criterion> {
311 private static class FormatOchSigType implements CriterionTypeFormatter { 334 private static class FormatOchSigType implements CriterionTypeFormatter {
312 @Override 335 @Override
313 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) { 336 public ObjectNode formatCriterion(ObjectNode root, Criterion criterion) {
314 - final Criteria.OpticalSignalTypeCriterion opticalSignalTypeCriterion = 337 + final OpticalSignalTypeCriterion opticalSignalTypeCriterion =
315 - (Criteria.OpticalSignalTypeCriterion) criterion; 338 + (OpticalSignalTypeCriterion) criterion;
316 return root.put("signalType", opticalSignalTypeCriterion.signalType()); 339 return root.put("signalType", opticalSignalTypeCriterion.signalType());
317 } 340 }
318 } 341 }
......
...@@ -17,10 +17,33 @@ package org.onosproject.codec.impl; ...@@ -17,10 +17,33 @@ package org.onosproject.codec.impl;
17 17
18 import org.hamcrest.Description; 18 import org.hamcrest.Description;
19 import org.hamcrest.TypeSafeDiagnosingMatcher; 19 import org.hamcrest.TypeSafeDiagnosingMatcher;
20 -import org.onosproject.net.flow.criteria.Criteria;
21 import org.onosproject.net.flow.criteria.Criterion; 20 import org.onosproject.net.flow.criteria.Criterion;
22 21
23 import com.fasterxml.jackson.databind.JsonNode; 22 import com.fasterxml.jackson.databind.JsonNode;
23 +import org.onosproject.net.flow.criteria.EthCriterion;
24 +import org.onosproject.net.flow.criteria.EthTypeCriterion;
25 +import org.onosproject.net.flow.criteria.IPCriterion;
26 +import org.onosproject.net.flow.criteria.IPDscpCriterion;
27 +import org.onosproject.net.flow.criteria.IPEcnCriterion;
28 +import org.onosproject.net.flow.criteria.IPProtocolCriterion;
29 +import org.onosproject.net.flow.criteria.IPv6ExthdrFlagsCriterion;
30 +import org.onosproject.net.flow.criteria.IPv6FlowLabelCriterion;
31 +import org.onosproject.net.flow.criteria.IPv6NDLinkLayerAddressCriterion;
32 +import org.onosproject.net.flow.criteria.IPv6NDTargetAddressCriterion;
33 +import org.onosproject.net.flow.criteria.IcmpCodeCriterion;
34 +import org.onosproject.net.flow.criteria.IcmpTypeCriterion;
35 +import org.onosproject.net.flow.criteria.Icmpv6CodeCriterion;
36 +import org.onosproject.net.flow.criteria.Icmpv6TypeCriterion;
37 +import org.onosproject.net.flow.criteria.LambdaCriterion;
38 +import org.onosproject.net.flow.criteria.MetadataCriterion;
39 +import org.onosproject.net.flow.criteria.MplsCriterion;
40 +import org.onosproject.net.flow.criteria.OpticalSignalTypeCriterion;
41 +import org.onosproject.net.flow.criteria.PortCriterion;
42 +import org.onosproject.net.flow.criteria.SctpPortCriterion;
43 +import org.onosproject.net.flow.criteria.TcpPortCriterion;
44 +import org.onosproject.net.flow.criteria.UdpPortCriterion;
45 +import org.onosproject.net.flow.criteria.VlanIdCriterion;
46 +import org.onosproject.net.flow.criteria.VlanPcpCriterion;
24 47
25 /** 48 /**
26 * Hamcrest matcher for criterion objects. 49 * Hamcrest matcher for criterion objects.
...@@ -57,7 +80,7 @@ public final class CriterionJsonMatcher extends ...@@ -57,7 +80,7 @@ public final class CriterionJsonMatcher extends
57 * @param criterion criterion to match 80 * @param criterion criterion to match
58 * @return true if the JSON matches the criterion, false otherwise. 81 * @return true if the JSON matches the criterion, false otherwise.
59 */ 82 */
60 - private boolean matchCriterion(Criteria.PortCriterion criterion) { 83 + private boolean matchCriterion(PortCriterion criterion) {
61 final long port = criterion.port().toLong(); 84 final long port = criterion.port().toLong();
62 final long jsonPort = jsonCriterion.get("port").asLong(); 85 final long jsonPort = jsonCriterion.get("port").asLong();
63 if (port != jsonPort) { 86 if (port != jsonPort) {
...@@ -73,7 +96,7 @@ public final class CriterionJsonMatcher extends ...@@ -73,7 +96,7 @@ public final class CriterionJsonMatcher extends
73 * @param criterion criterion to match 96 * @param criterion criterion to match
74 * @return true if the JSON matches the criterion, false otherwise. 97 * @return true if the JSON matches the criterion, false otherwise.
75 */ 98 */
76 - private boolean matchCriterion(Criteria.MetadataCriterion criterion) { 99 + private boolean matchCriterion(MetadataCriterion criterion) {
77 final long metadata = criterion.metadata(); 100 final long metadata = criterion.metadata();
78 final long jsonMetadata = jsonCriterion.get("metadata").asLong(); 101 final long jsonMetadata = jsonCriterion.get("metadata").asLong();
79 if (metadata != jsonMetadata) { 102 if (metadata != jsonMetadata) {
...@@ -90,7 +113,7 @@ public final class CriterionJsonMatcher extends ...@@ -90,7 +113,7 @@ public final class CriterionJsonMatcher extends
90 * @param criterion criterion to match 113 * @param criterion criterion to match
91 * @return true if the JSON matches the criterion, false otherwise. 114 * @return true if the JSON matches the criterion, false otherwise.
92 */ 115 */
93 - private boolean matchCriterion(Criteria.EthCriterion criterion) { 116 + private boolean matchCriterion(EthCriterion criterion) {
94 final String mac = criterion.mac().toString(); 117 final String mac = criterion.mac().toString();
95 final String jsonMac = jsonCriterion.get("mac").textValue(); 118 final String jsonMac = jsonCriterion.get("mac").textValue();
96 if (!mac.equals(jsonMac)) { 119 if (!mac.equals(jsonMac)) {
...@@ -106,7 +129,7 @@ public final class CriterionJsonMatcher extends ...@@ -106,7 +129,7 @@ public final class CriterionJsonMatcher extends
106 * @param criterion criterion to match 129 * @param criterion criterion to match
107 * @return true if the JSON matches the criterion, false otherwise. 130 * @return true if the JSON matches the criterion, false otherwise.
108 */ 131 */
109 - private boolean matchCriterion(Criteria.EthTypeCriterion criterion) { 132 + private boolean matchCriterion(EthTypeCriterion criterion) {
110 final int ethType = criterion.ethType(); 133 final int ethType = criterion.ethType();
111 final int jsonEthType = jsonCriterion.get("ethType").intValue(); 134 final int jsonEthType = jsonCriterion.get("ethType").intValue();
112 if (ethType != jsonEthType) { 135 if (ethType != jsonEthType) {
...@@ -123,7 +146,7 @@ public final class CriterionJsonMatcher extends ...@@ -123,7 +146,7 @@ public final class CriterionJsonMatcher extends
123 * @param criterion criterion to match 146 * @param criterion criterion to match
124 * @return true if the JSON matches the criterion, false otherwise. 147 * @return true if the JSON matches the criterion, false otherwise.
125 */ 148 */
126 - private boolean matchCriterion(Criteria.VlanIdCriterion criterion) { 149 + private boolean matchCriterion(VlanIdCriterion criterion) {
127 final short vlanId = criterion.vlanId().toShort(); 150 final short vlanId = criterion.vlanId().toShort();
128 final short jsonVlanId = jsonCriterion.get("vlanId").shortValue(); 151 final short jsonVlanId = jsonCriterion.get("vlanId").shortValue();
129 if (vlanId != jsonVlanId) { 152 if (vlanId != jsonVlanId) {
...@@ -139,7 +162,7 @@ public final class CriterionJsonMatcher extends ...@@ -139,7 +162,7 @@ public final class CriterionJsonMatcher extends
139 * @param criterion criterion to match 162 * @param criterion criterion to match
140 * @return true if the JSON matches the criterion, false otherwise. 163 * @return true if the JSON matches the criterion, false otherwise.
141 */ 164 */
142 - private boolean matchCriterion(Criteria.VlanPcpCriterion criterion) { 165 + private boolean matchCriterion(VlanPcpCriterion criterion) {
143 final byte priority = criterion.priority(); 166 final byte priority = criterion.priority();
144 final byte jsonPriority = 167 final byte jsonPriority =
145 (byte) jsonCriterion.get("priority").shortValue(); 168 (byte) jsonCriterion.get("priority").shortValue();
...@@ -156,7 +179,7 @@ public final class CriterionJsonMatcher extends ...@@ -156,7 +179,7 @@ public final class CriterionJsonMatcher extends
156 * @param criterion criterion to match 179 * @param criterion criterion to match
157 * @return true if the JSON matches the criterion, false otherwise. 180 * @return true if the JSON matches the criterion, false otherwise.
158 */ 181 */
159 - private boolean matchCriterion(Criteria.IPDscpCriterion criterion) { 182 + private boolean matchCriterion(IPDscpCriterion criterion) {
160 final byte ipDscp = criterion.ipDscp(); 183 final byte ipDscp = criterion.ipDscp();
161 final byte jsonIpDscp = (byte) jsonCriterion.get("ipDscp").shortValue(); 184 final byte jsonIpDscp = (byte) jsonCriterion.get("ipDscp").shortValue();
162 if (ipDscp != jsonIpDscp) { 185 if (ipDscp != jsonIpDscp) {
...@@ -172,7 +195,7 @@ public final class CriterionJsonMatcher extends ...@@ -172,7 +195,7 @@ public final class CriterionJsonMatcher extends
172 * @param criterion criterion to match 195 * @param criterion criterion to match
173 * @return true if the JSON matches the criterion, false otherwise. 196 * @return true if the JSON matches the criterion, false otherwise.
174 */ 197 */
175 - private boolean matchCriterion(Criteria.IPEcnCriterion criterion) { 198 + private boolean matchCriterion(IPEcnCriterion criterion) {
176 final byte ipEcn = criterion.ipEcn(); 199 final byte ipEcn = criterion.ipEcn();
177 final byte jsonIpEcn = (byte) jsonCriterion.get("ipEcn").shortValue(); 200 final byte jsonIpEcn = (byte) jsonCriterion.get("ipEcn").shortValue();
178 if (ipEcn != jsonIpEcn) { 201 if (ipEcn != jsonIpEcn) {
...@@ -188,7 +211,7 @@ public final class CriterionJsonMatcher extends ...@@ -188,7 +211,7 @@ public final class CriterionJsonMatcher extends
188 * @param criterion criterion to match 211 * @param criterion criterion to match
189 * @return true if the JSON matches the criterion, false otherwise. 212 * @return true if the JSON matches the criterion, false otherwise.
190 */ 213 */
191 - private boolean matchCriterion(Criteria.IPProtocolCriterion criterion) { 214 + private boolean matchCriterion(IPProtocolCriterion criterion) {
192 final short protocol = criterion.protocol(); 215 final short protocol = criterion.protocol();
193 final short jsonProtocol = jsonCriterion.get("protocol").shortValue(); 216 final short jsonProtocol = jsonCriterion.get("protocol").shortValue();
194 if (protocol != jsonProtocol) { 217 if (protocol != jsonProtocol) {
...@@ -205,7 +228,7 @@ public final class CriterionJsonMatcher extends ...@@ -205,7 +228,7 @@ public final class CriterionJsonMatcher extends
205 * @param criterion criterion to match 228 * @param criterion criterion to match
206 * @return true if the JSON matches the criterion, false otherwise. 229 * @return true if the JSON matches the criterion, false otherwise.
207 */ 230 */
208 - private boolean matchCriterion(Criteria.IPCriterion criterion) { 231 + private boolean matchCriterion(IPCriterion criterion) {
209 final String ip = criterion.ip().toString(); 232 final String ip = criterion.ip().toString();
210 final String jsonIp = jsonCriterion.get("ip").textValue(); 233 final String jsonIp = jsonCriterion.get("ip").textValue();
211 if (!ip.equals(jsonIp)) { 234 if (!ip.equals(jsonIp)) {
...@@ -221,7 +244,7 @@ public final class CriterionJsonMatcher extends ...@@ -221,7 +244,7 @@ public final class CriterionJsonMatcher extends
221 * @param criterion criterion to match 244 * @param criterion criterion to match
222 * @return true if the JSON matches the criterion, false otherwise. 245 * @return true if the JSON matches the criterion, false otherwise.
223 */ 246 */
224 - private boolean matchCriterion(Criteria.TcpPortCriterion criterion) { 247 + private boolean matchCriterion(TcpPortCriterion criterion) {
225 final int tcpPort = criterion.tcpPort(); 248 final int tcpPort = criterion.tcpPort();
226 final int jsonTcpPort = jsonCriterion.get("tcpPort").intValue(); 249 final int jsonTcpPort = jsonCriterion.get("tcpPort").intValue();
227 if (tcpPort != jsonTcpPort) { 250 if (tcpPort != jsonTcpPort) {
...@@ -238,7 +261,7 @@ public final class CriterionJsonMatcher extends ...@@ -238,7 +261,7 @@ public final class CriterionJsonMatcher extends
238 * @param criterion criterion to match 261 * @param criterion criterion to match
239 * @return true if the JSON matches the criterion, false otherwise. 262 * @return true if the JSON matches the criterion, false otherwise.
240 */ 263 */
241 - private boolean matchCriterion(Criteria.UdpPortCriterion criterion) { 264 + private boolean matchCriterion(UdpPortCriterion criterion) {
242 final int udpPort = criterion.udpPort(); 265 final int udpPort = criterion.udpPort();
243 final int jsonUdpPort = jsonCriterion.get("udpPort").intValue(); 266 final int jsonUdpPort = jsonCriterion.get("udpPort").intValue();
244 if (udpPort != jsonUdpPort) { 267 if (udpPort != jsonUdpPort) {
...@@ -255,7 +278,7 @@ public final class CriterionJsonMatcher extends ...@@ -255,7 +278,7 @@ public final class CriterionJsonMatcher extends
255 * @param criterion criterion to match 278 * @param criterion criterion to match
256 * @return true if the JSON matches the criterion, false otherwise. 279 * @return true if the JSON matches the criterion, false otherwise.
257 */ 280 */
258 - private boolean matchCriterion(Criteria.SctpPortCriterion criterion) { 281 + private boolean matchCriterion(SctpPortCriterion criterion) {
259 final int sctpPort = criterion.sctpPort(); 282 final int sctpPort = criterion.sctpPort();
260 final int jsonSctpPort = jsonCriterion.get("sctpPort").intValue(); 283 final int jsonSctpPort = jsonCriterion.get("sctpPort").intValue();
261 if (sctpPort != jsonSctpPort) { 284 if (sctpPort != jsonSctpPort) {
...@@ -272,7 +295,7 @@ public final class CriterionJsonMatcher extends ...@@ -272,7 +295,7 @@ public final class CriterionJsonMatcher extends
272 * @param criterion criterion to match 295 * @param criterion criterion to match
273 * @return true if the JSON matches the criterion, false otherwise. 296 * @return true if the JSON matches the criterion, false otherwise.
274 */ 297 */
275 - private boolean matchCriterion(Criteria.IcmpTypeCriterion criterion) { 298 + private boolean matchCriterion(IcmpTypeCriterion criterion) {
276 final short icmpType = criterion.icmpType(); 299 final short icmpType = criterion.icmpType();
277 final short jsonIcmpType = jsonCriterion.get("icmpType").shortValue(); 300 final short jsonIcmpType = jsonCriterion.get("icmpType").shortValue();
278 if (icmpType != jsonIcmpType) { 301 if (icmpType != jsonIcmpType) {
...@@ -289,7 +312,7 @@ public final class CriterionJsonMatcher extends ...@@ -289,7 +312,7 @@ public final class CriterionJsonMatcher extends
289 * @param criterion criterion to match 312 * @param criterion criterion to match
290 * @return true if the JSON matches the criterion, false otherwise. 313 * @return true if the JSON matches the criterion, false otherwise.
291 */ 314 */
292 - private boolean matchCriterion(Criteria.IcmpCodeCriterion criterion) { 315 + private boolean matchCriterion(IcmpCodeCriterion criterion) {
293 final short icmpCode = criterion.icmpCode(); 316 final short icmpCode = criterion.icmpCode();
294 final short jsonIcmpCode = jsonCriterion.get("icmpCode").shortValue(); 317 final short jsonIcmpCode = jsonCriterion.get("icmpCode").shortValue();
295 if (icmpCode != jsonIcmpCode) { 318 if (icmpCode != jsonIcmpCode) {
...@@ -306,7 +329,7 @@ public final class CriterionJsonMatcher extends ...@@ -306,7 +329,7 @@ public final class CriterionJsonMatcher extends
306 * @param criterion criterion to match 329 * @param criterion criterion to match
307 * @return true if the JSON matches the criterion, false otherwise. 330 * @return true if the JSON matches the criterion, false otherwise.
308 */ 331 */
309 - private boolean matchCriterion(Criteria.IPv6FlowLabelCriterion criterion) { 332 + private boolean matchCriterion(IPv6FlowLabelCriterion criterion) {
310 final int flowLabel = criterion.flowLabel(); 333 final int flowLabel = criterion.flowLabel();
311 final int jsonFlowLabel = jsonCriterion.get("flowLabel").intValue(); 334 final int jsonFlowLabel = jsonCriterion.get("flowLabel").intValue();
312 if (flowLabel != jsonFlowLabel) { 335 if (flowLabel != jsonFlowLabel) {
...@@ -323,7 +346,7 @@ public final class CriterionJsonMatcher extends ...@@ -323,7 +346,7 @@ public final class CriterionJsonMatcher extends
323 * @param criterion criterion to match 346 * @param criterion criterion to match
324 * @return true if the JSON matches the criterion, false otherwise. 347 * @return true if the JSON matches the criterion, false otherwise.
325 */ 348 */
326 - private boolean matchCriterion(Criteria.Icmpv6TypeCriterion criterion) { 349 + private boolean matchCriterion(Icmpv6TypeCriterion criterion) {
327 final short icmpv6Type = criterion.icmpv6Type(); 350 final short icmpv6Type = criterion.icmpv6Type();
328 final short jsonIcmpv6Type = 351 final short jsonIcmpv6Type =
329 jsonCriterion.get("icmpv6Type").shortValue(); 352 jsonCriterion.get("icmpv6Type").shortValue();
...@@ -341,7 +364,7 @@ public final class CriterionJsonMatcher extends ...@@ -341,7 +364,7 @@ public final class CriterionJsonMatcher extends
341 * @param criterion criterion to match 364 * @param criterion criterion to match
342 * @return true if the JSON matches the criterion, false otherwise. 365 * @return true if the JSON matches the criterion, false otherwise.
343 */ 366 */
344 - private boolean matchCriterion(Criteria.Icmpv6CodeCriterion criterion) { 367 + private boolean matchCriterion(Icmpv6CodeCriterion criterion) {
345 final short icmpv6Code = criterion.icmpv6Code(); 368 final short icmpv6Code = criterion.icmpv6Code();
346 final short jsonIcmpv6Code = 369 final short jsonIcmpv6Code =
347 jsonCriterion.get("icmpv6Code").shortValue(); 370 jsonCriterion.get("icmpv6Code").shortValue();
...@@ -359,7 +382,7 @@ public final class CriterionJsonMatcher extends ...@@ -359,7 +382,7 @@ public final class CriterionJsonMatcher extends
359 * @param criterion criterion to match 382 * @param criterion criterion to match
360 * @return true if the JSON matches the criterion, false otherwise. 383 * @return true if the JSON matches the criterion, false otherwise.
361 */ 384 */
362 - private boolean matchCriterion(Criteria.IPv6NDTargetAddressCriterion criterion) { 385 + private boolean matchCriterion(IPv6NDTargetAddressCriterion criterion) {
363 final String targetAddress = 386 final String targetAddress =
364 criterion.targetAddress().toString(); 387 criterion.targetAddress().toString();
365 final String jsonTargetAddress = 388 final String jsonTargetAddress =
...@@ -378,7 +401,7 @@ public final class CriterionJsonMatcher extends ...@@ -378,7 +401,7 @@ public final class CriterionJsonMatcher extends
378 * @param criterion criterion to match 401 * @param criterion criterion to match
379 * @return true if the JSON matches the criterion, false otherwise. 402 * @return true if the JSON matches the criterion, false otherwise.
380 */ 403 */
381 - private boolean matchCriterion(Criteria.IPv6NDLinkLayerAddressCriterion criterion) { 404 + private boolean matchCriterion(IPv6NDLinkLayerAddressCriterion criterion) {
382 final String llAddress = 405 final String llAddress =
383 criterion.mac().toString(); 406 criterion.mac().toString();
384 final String jsonLlAddress = 407 final String jsonLlAddress =
...@@ -396,7 +419,7 @@ public final class CriterionJsonMatcher extends ...@@ -396,7 +419,7 @@ public final class CriterionJsonMatcher extends
396 * @param criterion criterion to match 419 * @param criterion criterion to match
397 * @return true if the JSON matches the criterion, false otherwise. 420 * @return true if the JSON matches the criterion, false otherwise.
398 */ 421 */
399 - private boolean matchCriterion(Criteria.MplsCriterion criterion) { 422 + private boolean matchCriterion(MplsCriterion criterion) {
400 final int label = criterion.label().toInt(); 423 final int label = criterion.label().toInt();
401 final int jsonLabel = jsonCriterion.get("label").intValue(); 424 final int jsonLabel = jsonCriterion.get("label").intValue();
402 if (label != jsonLabel) { 425 if (label != jsonLabel) {
...@@ -412,7 +435,7 @@ public final class CriterionJsonMatcher extends ...@@ -412,7 +435,7 @@ public final class CriterionJsonMatcher extends
412 * @param criterion criterion to match 435 * @param criterion criterion to match
413 * @return true if the JSON matches the criterion, false otherwise. 436 * @return true if the JSON matches the criterion, false otherwise.
414 */ 437 */
415 - private boolean matchCriterion(Criteria.IPv6ExthdrFlagsCriterion criterion) { 438 + private boolean matchCriterion(IPv6ExthdrFlagsCriterion criterion) {
416 final int exthdrFlags = criterion.exthdrFlags(); 439 final int exthdrFlags = criterion.exthdrFlags();
417 final int jsonExthdrFlags = 440 final int jsonExthdrFlags =
418 jsonCriterion.get("exthdrFlags").intValue(); 441 jsonCriterion.get("exthdrFlags").intValue();
...@@ -430,7 +453,7 @@ public final class CriterionJsonMatcher extends ...@@ -430,7 +453,7 @@ public final class CriterionJsonMatcher extends
430 * @param criterion criterion to match 453 * @param criterion criterion to match
431 * @return true if the JSON matches the criterion, false otherwise. 454 * @return true if the JSON matches the criterion, false otherwise.
432 */ 455 */
433 - private boolean matchCriterion(Criteria.LambdaCriterion criterion) { 456 + private boolean matchCriterion(LambdaCriterion criterion) {
434 final int lambda = criterion.lambda(); 457 final int lambda = criterion.lambda();
435 final int jsonLambda = jsonCriterion.get("lambda").intValue(); 458 final int jsonLambda = jsonCriterion.get("lambda").intValue();
436 if (lambda != jsonLambda) { 459 if (lambda != jsonLambda) {
...@@ -446,7 +469,7 @@ public final class CriterionJsonMatcher extends ...@@ -446,7 +469,7 @@ public final class CriterionJsonMatcher extends
446 * @param criterion criterion to match 469 * @param criterion criterion to match
447 * @return true if the JSON matches the criterion, false otherwise. 470 * @return true if the JSON matches the criterion, false otherwise.
448 */ 471 */
449 - private boolean matchCriterion(Criteria.OpticalSignalTypeCriterion criterion) { 472 + private boolean matchCriterion(OpticalSignalTypeCriterion criterion) {
450 final short signalType = criterion.signalType(); 473 final short signalType = criterion.signalType();
451 final short jsonSignalType = jsonCriterion.get("signalType").shortValue(); 474 final short jsonSignalType = jsonCriterion.get("signalType").shortValue();
452 if (signalType != jsonSignalType) { 475 if (signalType != jsonSignalType) {
...@@ -472,88 +495,88 @@ public final class CriterionJsonMatcher extends ...@@ -472,88 +495,88 @@ public final class CriterionJsonMatcher extends
472 495
473 case IN_PORT: 496 case IN_PORT:
474 case IN_PHY_PORT: 497 case IN_PHY_PORT:
475 - return matchCriterion((Criteria.PortCriterion) criterion); 498 + return matchCriterion((PortCriterion) criterion);
476 499
477 case METADATA: 500 case METADATA:
478 - return matchCriterion((Criteria.MetadataCriterion) criterion); 501 + return matchCriterion((MetadataCriterion) criterion);
479 502
480 case ETH_DST: 503 case ETH_DST:
481 case ETH_SRC: 504 case ETH_SRC:
482 - return matchCriterion((Criteria.EthCriterion) criterion); 505 + return matchCriterion((EthCriterion) criterion);
483 506
484 case ETH_TYPE: 507 case ETH_TYPE:
485 - return matchCriterion((Criteria.EthTypeCriterion) criterion); 508 + return matchCriterion((EthTypeCriterion) criterion);
486 509
487 case VLAN_VID: 510 case VLAN_VID:
488 - return matchCriterion((Criteria.VlanIdCriterion) criterion); 511 + return matchCriterion((VlanIdCriterion) criterion);
489 512
490 case VLAN_PCP: 513 case VLAN_PCP:
491 - return matchCriterion((Criteria.VlanPcpCriterion) criterion); 514 + return matchCriterion((VlanPcpCriterion) criterion);
492 515
493 case IP_DSCP: 516 case IP_DSCP:
494 - return matchCriterion((Criteria.IPDscpCriterion) criterion); 517 + return matchCriterion((IPDscpCriterion) criterion);
495 518
496 case IP_ECN: 519 case IP_ECN:
497 - return matchCriterion((Criteria.IPEcnCriterion) criterion); 520 + return matchCriterion((IPEcnCriterion) criterion);
498 521
499 case IP_PROTO: 522 case IP_PROTO:
500 - return matchCriterion((Criteria.IPProtocolCriterion) criterion); 523 + return matchCriterion((IPProtocolCriterion) criterion);
501 524
502 case IPV4_SRC: 525 case IPV4_SRC:
503 case IPV4_DST: 526 case IPV4_DST:
504 case IPV6_SRC: 527 case IPV6_SRC:
505 case IPV6_DST: 528 case IPV6_DST:
506 - return matchCriterion((Criteria.IPCriterion) criterion); 529 + return matchCriterion((IPCriterion) criterion);
507 530
508 case TCP_SRC: 531 case TCP_SRC:
509 case TCP_DST: 532 case TCP_DST:
510 - return matchCriterion((Criteria.TcpPortCriterion) criterion); 533 + return matchCriterion((TcpPortCriterion) criterion);
511 534
512 case UDP_SRC: 535 case UDP_SRC:
513 case UDP_DST: 536 case UDP_DST:
514 - return matchCriterion((Criteria.UdpPortCriterion) criterion); 537 + return matchCriterion((UdpPortCriterion) criterion);
515 538
516 case SCTP_SRC: 539 case SCTP_SRC:
517 case SCTP_DST: 540 case SCTP_DST:
518 - return matchCriterion((Criteria.SctpPortCriterion) criterion); 541 + return matchCriterion((SctpPortCriterion) criterion);
519 542
520 case ICMPV4_TYPE: 543 case ICMPV4_TYPE:
521 - return matchCriterion((Criteria.IcmpTypeCriterion) criterion); 544 + return matchCriterion((IcmpTypeCriterion) criterion);
522 545
523 case ICMPV4_CODE: 546 case ICMPV4_CODE:
524 - return matchCriterion((Criteria.IcmpCodeCriterion) criterion); 547 + return matchCriterion((IcmpCodeCriterion) criterion);
525 548
526 case IPV6_FLABEL: 549 case IPV6_FLABEL:
527 - return matchCriterion((Criteria.IPv6FlowLabelCriterion) criterion); 550 + return matchCriterion((IPv6FlowLabelCriterion) criterion);
528 551
529 case ICMPV6_TYPE: 552 case ICMPV6_TYPE:
530 - return matchCriterion((Criteria.Icmpv6TypeCriterion) criterion); 553 + return matchCriterion((Icmpv6TypeCriterion) criterion);
531 554
532 case ICMPV6_CODE: 555 case ICMPV6_CODE:
533 - return matchCriterion((Criteria.Icmpv6CodeCriterion) criterion); 556 + return matchCriterion((Icmpv6CodeCriterion) criterion);
534 557
535 case IPV6_ND_TARGET: 558 case IPV6_ND_TARGET:
536 return matchCriterion( 559 return matchCriterion(
537 - (Criteria.IPv6NDTargetAddressCriterion) criterion); 560 + (IPv6NDTargetAddressCriterion) criterion);
538 561
539 case IPV6_ND_SLL: 562 case IPV6_ND_SLL:
540 case IPV6_ND_TLL: 563 case IPV6_ND_TLL:
541 return matchCriterion( 564 return matchCriterion(
542 - (Criteria.IPv6NDLinkLayerAddressCriterion) criterion); 565 + (IPv6NDLinkLayerAddressCriterion) criterion);
543 566
544 case MPLS_LABEL: 567 case MPLS_LABEL:
545 - return matchCriterion((Criteria.MplsCriterion) criterion); 568 + return matchCriterion((MplsCriterion) criterion);
546 569
547 case IPV6_EXTHDR: 570 case IPV6_EXTHDR:
548 return matchCriterion( 571 return matchCriterion(
549 - (Criteria.IPv6ExthdrFlagsCriterion) criterion); 572 + (IPv6ExthdrFlagsCriterion) criterion);
550 573
551 case OCH_SIGID: 574 case OCH_SIGID:
552 - return matchCriterion((Criteria.LambdaCriterion) criterion); 575 + return matchCriterion((LambdaCriterion) criterion);
553 576
554 case OCH_SIGTYPE: 577 case OCH_SIGTYPE:
555 return matchCriterion( 578 return matchCriterion(
556 - (Criteria.OpticalSignalTypeCriterion) criterion); 579 + (OpticalSignalTypeCriterion) criterion);
557 580
558 default: 581 default:
559 // Don't know how to format this type 582 // Don't know how to format this type
......
...@@ -34,8 +34,8 @@ import org.onosproject.net.flow.DefaultTrafficTreatment; ...@@ -34,8 +34,8 @@ import org.onosproject.net.flow.DefaultTrafficTreatment;
34 import org.onosproject.net.flow.FlowRule; 34 import org.onosproject.net.flow.FlowRule;
35 import org.onosproject.net.flow.TrafficSelector; 35 import org.onosproject.net.flow.TrafficSelector;
36 import org.onosproject.net.flow.TrafficTreatment; 36 import org.onosproject.net.flow.TrafficTreatment;
37 -import org.onosproject.net.flow.criteria.Criteria;
38 import org.onosproject.net.flow.criteria.Criterion; 37 import org.onosproject.net.flow.criteria.Criterion;
38 +import org.onosproject.net.flow.criteria.EthTypeCriterion;
39 import org.onosproject.net.intent.FlowRuleIntent; 39 import org.onosproject.net.intent.FlowRuleIntent;
40 import org.onosproject.net.intent.Intent; 40 import org.onosproject.net.intent.Intent;
41 import org.onosproject.net.intent.IntentCompiler; 41 import org.onosproject.net.intent.IntentCompiler;
...@@ -241,8 +241,8 @@ public class MplsPathIntentCompiler implements IntentCompiler<MplsPathIntent> { ...@@ -241,8 +241,8 @@ public class MplsPathIntentCompiler implements IntentCompiler<MplsPathIntent> {
241 // if the ingress ethertype is defined, the egress traffic 241 // if the ingress ethertype is defined, the egress traffic
242 // will be use that value, otherwise the IPv4 ethertype is used. 242 // will be use that value, otherwise the IPv4 ethertype is used.
243 Criterion c = intent.selector().getCriterion(Criterion.Type.ETH_TYPE); 243 Criterion c = intent.selector().getCriterion(Criterion.Type.ETH_TYPE);
244 - if (c != null && c instanceof Criteria.EthTypeCriterion) { 244 + if (c != null && c instanceof EthTypeCriterion) {
245 - Criteria.EthTypeCriterion ethertype = (Criteria.EthTypeCriterion) c; 245 + EthTypeCriterion ethertype = (EthTypeCriterion) c;
246 treat.popMpls((short) ethertype.ethType()); 246 treat.popMpls((short) ethertype.ethType());
247 } else { 247 } else {
248 treat.popMpls(Ethernet.TYPE_IPV4); 248 treat.popMpls(Ethernet.TYPE_IPV4);
......
...@@ -73,8 +73,31 @@ import org.onosproject.net.flow.FlowRuleBatchOperation; ...@@ -73,8 +73,31 @@ import org.onosproject.net.flow.FlowRuleBatchOperation;
73 import org.onosproject.net.flow.FlowRuleBatchRequest; 73 import org.onosproject.net.flow.FlowRuleBatchRequest;
74 import org.onosproject.net.flow.FlowRuleExtPayLoad; 74 import org.onosproject.net.flow.FlowRuleExtPayLoad;
75 import org.onosproject.net.flow.StoredFlowEntry; 75 import org.onosproject.net.flow.StoredFlowEntry;
76 -import org.onosproject.net.flow.criteria.Criteria;
77 import org.onosproject.net.flow.criteria.Criterion; 76 import org.onosproject.net.flow.criteria.Criterion;
77 +import org.onosproject.net.flow.criteria.EthCriterion;
78 +import org.onosproject.net.flow.criteria.EthTypeCriterion;
79 +import org.onosproject.net.flow.criteria.IPCriterion;
80 +import org.onosproject.net.flow.criteria.IPDscpCriterion;
81 +import org.onosproject.net.flow.criteria.IPEcnCriterion;
82 +import org.onosproject.net.flow.criteria.IPProtocolCriterion;
83 +import org.onosproject.net.flow.criteria.IPv6ExthdrFlagsCriterion;
84 +import org.onosproject.net.flow.criteria.IPv6FlowLabelCriterion;
85 +import org.onosproject.net.flow.criteria.IPv6NDLinkLayerAddressCriterion;
86 +import org.onosproject.net.flow.criteria.IPv6NDTargetAddressCriterion;
87 +import org.onosproject.net.flow.criteria.IcmpCodeCriterion;
88 +import org.onosproject.net.flow.criteria.IcmpTypeCriterion;
89 +import org.onosproject.net.flow.criteria.Icmpv6CodeCriterion;
90 +import org.onosproject.net.flow.criteria.Icmpv6TypeCriterion;
91 +import org.onosproject.net.flow.criteria.LambdaCriterion;
92 +import org.onosproject.net.flow.criteria.MetadataCriterion;
93 +import org.onosproject.net.flow.criteria.MplsCriterion;
94 +import org.onosproject.net.flow.criteria.OpticalSignalTypeCriterion;
95 +import org.onosproject.net.flow.criteria.PortCriterion;
96 +import org.onosproject.net.flow.criteria.SctpPortCriterion;
97 +import org.onosproject.net.flow.criteria.TcpPortCriterion;
98 +import org.onosproject.net.flow.criteria.UdpPortCriterion;
99 +import org.onosproject.net.flow.criteria.VlanIdCriterion;
100 +import org.onosproject.net.flow.criteria.VlanPcpCriterion;
78 import org.onosproject.net.flow.instructions.Instructions; 101 import org.onosproject.net.flow.instructions.Instructions;
79 import org.onosproject.net.flow.instructions.L0ModificationInstruction; 102 import org.onosproject.net.flow.instructions.L0ModificationInstruction;
80 import org.onosproject.net.flow.instructions.L2ModificationInstruction; 103 import org.onosproject.net.flow.instructions.L2ModificationInstruction;
...@@ -234,30 +257,30 @@ public final class KryoNamespaces { ...@@ -234,30 +257,30 @@ public final class KryoNamespaces {
234 FlowEntry.FlowEntryState.class, 257 FlowEntry.FlowEntryState.class,
235 FlowId.class, 258 FlowId.class,
236 DefaultTrafficSelector.class, 259 DefaultTrafficSelector.class,
237 - Criteria.PortCriterion.class, 260 + PortCriterion.class,
238 - Criteria.MetadataCriterion.class, 261 + MetadataCriterion.class,
239 - Criteria.EthCriterion.class, 262 + EthCriterion.class,
240 - Criteria.EthTypeCriterion.class, 263 + EthTypeCriterion.class,
241 - Criteria.VlanIdCriterion.class, 264 + VlanIdCriterion.class,
242 - Criteria.VlanPcpCriterion.class, 265 + VlanPcpCriterion.class,
243 - Criteria.IPDscpCriterion.class, 266 + IPDscpCriterion.class,
244 - Criteria.IPEcnCriterion.class, 267 + IPEcnCriterion.class,
245 - Criteria.IPProtocolCriterion.class, 268 + IPProtocolCriterion.class,
246 - Criteria.IPCriterion.class, 269 + IPCriterion.class,
247 - Criteria.TcpPortCriterion.class, 270 + TcpPortCriterion.class,
248 - Criteria.UdpPortCriterion.class, 271 + UdpPortCriterion.class,
249 - Criteria.SctpPortCriterion.class, 272 + SctpPortCriterion.class,
250 - Criteria.IcmpTypeCriterion.class, 273 + IcmpTypeCriterion.class,
251 - Criteria.IcmpCodeCriterion.class, 274 + IcmpCodeCriterion.class,
252 - Criteria.IPv6FlowLabelCriterion.class, 275 + IPv6FlowLabelCriterion.class,
253 - Criteria.Icmpv6TypeCriterion.class, 276 + Icmpv6TypeCriterion.class,
254 - Criteria.Icmpv6CodeCriterion.class, 277 + Icmpv6CodeCriterion.class,
255 - Criteria.IPv6NDTargetAddressCriterion.class, 278 + IPv6NDTargetAddressCriterion.class,
256 - Criteria.IPv6NDLinkLayerAddressCriterion.class, 279 + IPv6NDLinkLayerAddressCriterion.class,
257 - Criteria.MplsCriterion.class, 280 + MplsCriterion.class,
258 - Criteria.IPv6ExthdrFlagsCriterion.class, 281 + IPv6ExthdrFlagsCriterion.class,
259 - Criteria.LambdaCriterion.class, 282 + LambdaCriterion.class,
260 - Criteria.OpticalSignalTypeCriterion.class, 283 + OpticalSignalTypeCriterion.class,
261 Criterion.class, 284 Criterion.class,
262 Criterion.Type.class, 285 Criterion.Type.class,
263 DefaultTrafficTreatment.class, 286 DefaultTrafficTreatment.class,
......
...@@ -44,6 +44,12 @@ import org.onosproject.net.flow.TrafficSelector; ...@@ -44,6 +44,12 @@ import org.onosproject.net.flow.TrafficSelector;
44 import org.onosproject.net.flow.TrafficTreatment; 44 import org.onosproject.net.flow.TrafficTreatment;
45 import org.onosproject.net.flow.criteria.Criteria; 45 import org.onosproject.net.flow.criteria.Criteria;
46 import org.onosproject.net.flow.criteria.Criterion; 46 import org.onosproject.net.flow.criteria.Criterion;
47 +import org.onosproject.net.flow.criteria.EthCriterion;
48 +import org.onosproject.net.flow.criteria.EthTypeCriterion;
49 +import org.onosproject.net.flow.criteria.IPCriterion;
50 +import org.onosproject.net.flow.criteria.IPProtocolCriterion;
51 +import org.onosproject.net.flow.criteria.PortCriterion;
52 +import org.onosproject.net.flow.criteria.VlanIdCriterion;
47 import org.onosproject.net.flowobjective.FilteringObjective; 53 import org.onosproject.net.flowobjective.FilteringObjective;
48 import org.onosproject.net.flowobjective.FlowObjectiveStore; 54 import org.onosproject.net.flowobjective.FlowObjectiveStore;
49 import org.onosproject.net.flowobjective.ForwardingObjective; 55 import org.onosproject.net.flowobjective.ForwardingObjective;
...@@ -245,8 +251,8 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli ...@@ -245,8 +251,8 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli
245 log.debug("Processing versatile forwarding objective"); 251 log.debug("Processing versatile forwarding objective");
246 TrafficSelector selector = fwd.selector(); 252 TrafficSelector selector = fwd.selector();
247 253
248 - Criteria.EthTypeCriterion ethType = 254 + EthTypeCriterion ethType =
249 - (Criteria.EthTypeCriterion) selector.getCriterion(Criterion.Type.ETH_TYPE); 255 + (EthTypeCriterion) selector.getCriterion(Criterion.Type.ETH_TYPE);
250 if (ethType == null) { 256 if (ethType == null) {
251 log.error("Versatile forwarding objective must include ethType"); 257 log.error("Versatile forwarding objective must include ethType");
252 fail(fwd, ObjectiveError.UNKNOWN); 258 fail(fwd, ObjectiveError.UNKNOWN);
...@@ -263,11 +269,11 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli ...@@ -263,11 +269,11 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli
263 fail(fwd, ObjectiveError.UNSUPPORTED); 269 fail(fwd, ObjectiveError.UNSUPPORTED);
264 return Collections.emptySet(); 270 return Collections.emptySet();
265 } else if (ethType.ethType() == Ethernet.TYPE_IPV4) { 271 } else if (ethType.ethType() == Ethernet.TYPE_IPV4) {
266 - Criteria.IPCriterion ipSrc = (Criteria.IPCriterion) selector 272 + IPCriterion ipSrc = (IPCriterion) selector
267 .getCriterion(Criterion.Type.IPV4_SRC); 273 .getCriterion(Criterion.Type.IPV4_SRC);
268 - Criteria.IPCriterion ipDst = (Criteria.IPCriterion) selector 274 + IPCriterion ipDst = (IPCriterion) selector
269 .getCriterion(Criterion.Type.IPV4_DST); 275 .getCriterion(Criterion.Type.IPV4_DST);
270 - Criteria.IPProtocolCriterion ipProto = (Criteria.IPProtocolCriterion) selector 276 + IPProtocolCriterion ipProto = (IPProtocolCriterion) selector
271 .getCriterion(Criterion.Type.IP_PROTO); 277 .getCriterion(Criterion.Type.IP_PROTO);
272 if (ipSrc != null) { 278 if (ipSrc != null) {
273 log.warn("Driver does not currently handle matching Src IP"); 279 log.warn("Driver does not currently handle matching Src IP");
...@@ -296,8 +302,8 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli ...@@ -296,8 +302,8 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli
296 private Collection<FlowRule> processSpecific(ForwardingObjective fwd) { 302 private Collection<FlowRule> processSpecific(ForwardingObjective fwd) {
297 log.debug("Processing specific forwarding objective"); 303 log.debug("Processing specific forwarding objective");
298 TrafficSelector selector = fwd.selector(); 304 TrafficSelector selector = fwd.selector();
299 - Criteria.EthTypeCriterion ethType = 305 + EthTypeCriterion ethType =
300 - (Criteria.EthTypeCriterion) selector.getCriterion(Criterion.Type.ETH_TYPE); 306 + (EthTypeCriterion) selector.getCriterion(Criterion.Type.ETH_TYPE);
301 if (ethType == null || ethType.ethType() != Ethernet.TYPE_IPV4) { 307 if (ethType == null || ethType.ethType() != Ethernet.TYPE_IPV4) {
302 fail(fwd, ObjectiveError.UNSUPPORTED); 308 fail(fwd, ObjectiveError.UNSUPPORTED);
303 return Collections.emptySet(); 309 return Collections.emptySet();
...@@ -307,7 +313,7 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli ...@@ -307,7 +313,7 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli
307 DefaultTrafficSelector.builder() 313 DefaultTrafficSelector.builder()
308 .matchEthType(Ethernet.TYPE_IPV4) 314 .matchEthType(Ethernet.TYPE_IPV4)
309 .matchIPDst( 315 .matchIPDst(
310 - ((Criteria.IPCriterion) 316 + ((IPCriterion)
311 selector.getCriterion(Criterion.Type.IPV4_DST)).ip()) 317 selector.getCriterion(Criterion.Type.IPV4_DST)).ip())
312 .build(); 318 .build();
313 319
...@@ -351,10 +357,10 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli ...@@ -351,10 +357,10 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli
351 ApplicationId applicationId) { 357 ApplicationId applicationId) {
352 // This driver only processes filtering criteria defined with switch 358 // This driver only processes filtering criteria defined with switch
353 // ports as the key 359 // ports as the key
354 - Criteria.PortCriterion p; 360 + PortCriterion p;
355 if (!filt.key().equals(Criteria.dummy()) && 361 if (!filt.key().equals(Criteria.dummy()) &&
356 filt.key().type() == Criterion.Type.IN_PORT) { 362 filt.key().type() == Criterion.Type.IN_PORT) {
357 - p = (Criteria.PortCriterion) filt.key(); 363 + p = (PortCriterion) filt.key();
358 } else { 364 } else {
359 log.warn("No key defined in filtering objective from app: {}. Not" 365 log.warn("No key defined in filtering objective from app: {}. Not"
360 + "processing filtering objective", applicationId); 366 + "processing filtering objective", applicationId);
...@@ -365,7 +371,7 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli ...@@ -365,7 +371,7 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli
365 FlowRuleOperations.Builder ops = FlowRuleOperations.builder(); 371 FlowRuleOperations.Builder ops = FlowRuleOperations.builder();
366 for (Criterion c : filt.conditions()) { 372 for (Criterion c : filt.conditions()) {
367 if (c.type() == Criterion.Type.ETH_DST) { 373 if (c.type() == Criterion.Type.ETH_DST) {
368 - Criteria.EthCriterion e = (Criteria.EthCriterion) c; 374 + EthCriterion e = (EthCriterion) c;
369 log.debug("adding rule for MAC: {}", e.mac()); 375 log.debug("adding rule for MAC: {}", e.mac());
370 TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); 376 TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
371 TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); 377 TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
...@@ -381,7 +387,7 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli ...@@ -381,7 +387,7 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli
381 .forTable(MAC_TABLE).build(); 387 .forTable(MAC_TABLE).build();
382 ops = install ? ops.add(rule) : ops.remove(rule); 388 ops = install ? ops.add(rule) : ops.remove(rule);
383 } else if (c.type() == Criterion.Type.VLAN_VID) { 389 } else if (c.type() == Criterion.Type.VLAN_VID) {
384 - Criteria.VlanIdCriterion v = (Criteria.VlanIdCriterion) c; 390 + VlanIdCriterion v = (VlanIdCriterion) c;
385 log.debug("adding rule for VLAN: {}", v.vlanId()); 391 log.debug("adding rule for VLAN: {}", v.vlanId());
386 TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); 392 TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
387 TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); 393 TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
...@@ -399,7 +405,7 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli ...@@ -399,7 +405,7 @@ public class OVSCorsaPipeline extends AbstractHandlerBehaviour implements Pipeli
399 .forTable(VLAN_TABLE).build(); 405 .forTable(VLAN_TABLE).build();
400 ops = install ? ops.add(rule) : ops.remove(rule); 406 ops = install ? ops.add(rule) : ops.remove(rule);
401 } else if (c.type() == Criterion.Type.IPV4_DST) { 407 } else if (c.type() == Criterion.Type.IPV4_DST) {
402 - Criteria.IPCriterion ip = (Criteria.IPCriterion) c; 408 + IPCriterion ip = (IPCriterion) c;
403 log.debug("adding rule for IP: {}", ip.ip()); 409 log.debug("adding rule for IP: {}", ip.ip());
404 TrafficSelector.Builder selector = DefaultTrafficSelector.builder(); 410 TrafficSelector.Builder selector = DefaultTrafficSelector.builder();
405 TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder(); 411 TrafficTreatment.Builder treatment = DefaultTrafficTreatment.builder();
......
...@@ -22,28 +22,30 @@ import org.onlab.packet.Ip6Prefix; ...@@ -22,28 +22,30 @@ import org.onlab.packet.Ip6Prefix;
22 import org.onlab.packet.VlanId; 22 import org.onlab.packet.VlanId;
23 import org.onosproject.net.flow.FlowRule; 23 import org.onosproject.net.flow.FlowRule;
24 import org.onosproject.net.flow.TrafficSelector; 24 import org.onosproject.net.flow.TrafficSelector;
25 -import org.onosproject.net.flow.criteria.Criteria; 25 +import org.onosproject.net.flow.criteria.EthCriterion;
26 -import org.onosproject.net.flow.criteria.Criteria.EthCriterion; 26 +import org.onosproject.net.flow.criteria.EthTypeCriterion;
27 -import org.onosproject.net.flow.criteria.Criteria.EthTypeCriterion; 27 +import org.onosproject.net.flow.criteria.IPCriterion;
28 -import org.onosproject.net.flow.criteria.Criteria.IPCriterion; 28 +import org.onosproject.net.flow.criteria.IPDscpCriterion;
29 -import org.onosproject.net.flow.criteria.Criteria.IPDscpCriterion; 29 +import org.onosproject.net.flow.criteria.IPEcnCriterion;
30 -import org.onosproject.net.flow.criteria.Criteria.IPEcnCriterion; 30 +import org.onosproject.net.flow.criteria.IPProtocolCriterion;
31 -import org.onosproject.net.flow.criteria.Criteria.IPProtocolCriterion; 31 +import org.onosproject.net.flow.criteria.IPv6ExthdrFlagsCriterion;
32 -import org.onosproject.net.flow.criteria.Criteria.IPv6FlowLabelCriterion; 32 +import org.onosproject.net.flow.criteria.IPv6FlowLabelCriterion;
33 -import org.onosproject.net.flow.criteria.Criteria.IPv6NDLinkLayerAddressCriterion; 33 +import org.onosproject.net.flow.criteria.IPv6NDLinkLayerAddressCriterion;
34 -import org.onosproject.net.flow.criteria.Criteria.IPv6NDTargetAddressCriterion; 34 +import org.onosproject.net.flow.criteria.IPv6NDTargetAddressCriterion;
35 -import org.onosproject.net.flow.criteria.Criteria.IcmpCodeCriterion; 35 +import org.onosproject.net.flow.criteria.IcmpCodeCriterion;
36 -import org.onosproject.net.flow.criteria.Criteria.IcmpTypeCriterion; 36 +import org.onosproject.net.flow.criteria.IcmpTypeCriterion;
37 -import org.onosproject.net.flow.criteria.Criteria.Icmpv6CodeCriterion; 37 +import org.onosproject.net.flow.criteria.Icmpv6CodeCriterion;
38 -import org.onosproject.net.flow.criteria.Criteria.Icmpv6TypeCriterion; 38 +import org.onosproject.net.flow.criteria.Icmpv6TypeCriterion;
39 -import org.onosproject.net.flow.criteria.Criteria.LambdaCriterion; 39 +import org.onosproject.net.flow.criteria.LambdaCriterion;
40 -import org.onosproject.net.flow.criteria.Criteria.MetadataCriterion; 40 +import org.onosproject.net.flow.criteria.MetadataCriterion;
41 -import org.onosproject.net.flow.criteria.Criteria.PortCriterion; 41 +import org.onosproject.net.flow.criteria.MplsCriterion;
42 -import org.onosproject.net.flow.criteria.Criteria.SctpPortCriterion; 42 +import org.onosproject.net.flow.criteria.OpticalSignalTypeCriterion;
43 -import org.onosproject.net.flow.criteria.Criteria.TcpPortCriterion; 43 +import org.onosproject.net.flow.criteria.PortCriterion;
44 -import org.onosproject.net.flow.criteria.Criteria.UdpPortCriterion; 44 +import org.onosproject.net.flow.criteria.SctpPortCriterion;
45 -import org.onosproject.net.flow.criteria.Criteria.VlanIdCriterion; 45 +import org.onosproject.net.flow.criteria.TcpPortCriterion;
46 -import org.onosproject.net.flow.criteria.Criteria.VlanPcpCriterion; 46 +import org.onosproject.net.flow.criteria.UdpPortCriterion;
47 +import org.onosproject.net.flow.criteria.VlanIdCriterion;
48 +import org.onosproject.net.flow.criteria.VlanPcpCriterion;
47 import org.onosproject.net.flow.criteria.Criterion; 49 import org.onosproject.net.flow.criteria.Criterion;
48 import org.projectfloodlight.openflow.protocol.OFFactory; 50 import org.projectfloodlight.openflow.protocol.OFFactory;
49 import org.projectfloodlight.openflow.protocol.OFFlowAdd; 51 import org.projectfloodlight.openflow.protocol.OFFlowAdd;
...@@ -362,12 +364,12 @@ public abstract class FlowModBuilder { ...@@ -362,12 +364,12 @@ public abstract class FlowModBuilder {
362 MacAddress.of(llAddressCriterion.mac().toLong())); 364 MacAddress.of(llAddressCriterion.mac().toLong()));
363 break; 365 break;
364 case MPLS_LABEL: 366 case MPLS_LABEL:
365 - Criteria.MplsCriterion mp = (Criteria.MplsCriterion) c; 367 + MplsCriterion mp = (MplsCriterion) c;
366 mBuilder.setExact(MatchField.MPLS_LABEL, U32.of(mp.label().toInt())); 368 mBuilder.setExact(MatchField.MPLS_LABEL, U32.of(mp.label().toInt()));
367 break; 369 break;
368 case IPV6_EXTHDR: 370 case IPV6_EXTHDR:
369 - Criteria.IPv6ExthdrFlagsCriterion exthdrFlagsCriterion = 371 + IPv6ExthdrFlagsCriterion exthdrFlagsCriterion =
370 - (Criteria.IPv6ExthdrFlagsCriterion) c; 372 + (IPv6ExthdrFlagsCriterion) c;
371 mBuilder.setExact(MatchField.IPV6_EXTHDR, 373 mBuilder.setExact(MatchField.IPV6_EXTHDR,
372 U16.of(exthdrFlagsCriterion.exthdrFlags())); 374 U16.of(exthdrFlagsCriterion.exthdrFlags()));
373 break; 375 break;
...@@ -378,8 +380,8 @@ public abstract class FlowModBuilder { ...@@ -378,8 +380,8 @@ public abstract class FlowModBuilder {
378 (short) lc.lambda(), (short) 1)); 380 (short) lc.lambda(), (short) 1));
379 break; 381 break;
380 case OCH_SIGTYPE: 382 case OCH_SIGTYPE:
381 - Criteria.OpticalSignalTypeCriterion sc = 383 + OpticalSignalTypeCriterion sc =
382 - (Criteria.OpticalSignalTypeCriterion) c; 384 + (OpticalSignalTypeCriterion) c;
383 mBuilder.setExact(MatchField.OCH_SIGTYPE, 385 mBuilder.setExact(MatchField.OCH_SIGTYPE,
384 U8.of(sc.signalType())); 386 U8.of(sc.signalType()));
385 break; 387 break;
......