blob: ebda9a9e915eabce4c0bb6ee454f3bc24bf9075f [file] [log] [blame]
Ray Milkeyc95bb9d2015-01-06 10:28:24 -08001/*
Brian O'Connor5ab426f2016-04-09 01:19:45 -07002 * Copyright 2015-present Open Networking Laboratory
Ray Milkeyc95bb9d2015-01-06 10:28:24 -08003 *
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 */
16package org.onosproject.codec.impl;
17
18import org.onosproject.codec.CodecContext;
19import org.onosproject.codec.JsonCodec;
Ray Milkeyc95bb9d2015-01-06 10:28:24 -080020import org.onosproject.net.flow.criteria.Criterion;
21import org.slf4j.Logger;
22import org.slf4j.LoggerFactory;
23
24import com.fasterxml.jackson.databind.node.ObjectNode;
25
Ray Milkeyc95bb9d2015-01-06 10:28:24 -080026/**
27 * Criterion codec.
28 */
Ray Milkey540b2ce2015-02-04 17:50:20 -080029public final class CriterionCodec extends JsonCodec<Criterion> {
Ray Milkeyc95bb9d2015-01-06 10:28:24 -080030
Ray Milkey73ba84a2015-02-04 17:08:41 -080031 protected static final Logger log =
32 LoggerFactory.getLogger(CriterionCodec.class);
33
Ray Milkeyd43fe452015-05-29 09:35:12 -070034 protected static final String TYPE = "type";
35 protected static final String ETH_TYPE = "ethType";
36 protected static final String MAC = "mac";
37 protected static final String PORT = "port";
38 protected static final String METADATA = "metadata";
Ray Milkey73ba84a2015-02-04 17:08:41 -080039
Ray Milkeyd43fe452015-05-29 09:35:12 -070040 protected static final String VLAN_ID = "vlanId";
alshabibfa0dc662016-01-13 11:23:53 -080041 protected static final String INNER_VLAN_ID = "innerVlanId";
42 protected static final String INNER_PRIORITY = "innerPriority";
Ray Milkeyd43fe452015-05-29 09:35:12 -070043 protected static final String PRIORITY = "priority";
44 protected static final String IP_DSCP = "ipDscp";
45 protected static final String IP_ECN = "ipEcn";
46 protected static final String PROTOCOL = "protocol";
47 protected static final String IP = "ip";
48 protected static final String TCP_PORT = "tcpPort";
49 protected static final String UDP_PORT = "udpPort";
50 protected static final String SCTP_PORT = "sctpPort";
51 protected static final String ICMP_TYPE = "icmpType";
52 protected static final String ICMP_CODE = "icmpCode";
53 protected static final String FLOW_LABEL = "flowLabel";
54 protected static final String ICMPV6_TYPE = "icmpv6Type";
55 protected static final String ICMPV6_CODE = "icmpv6Code";
56 protected static final String TARGET_ADDRESS = "targetAddress";
57 protected static final String LABEL = "label";
Jonathan Hartcc962d82016-08-09 16:52:22 -070058 protected static final String BOS = "bos";
Ray Milkeyd43fe452015-05-29 09:35:12 -070059 protected static final String EXT_HDR_FLAGS = "exthdrFlags";
60 protected static final String LAMBDA = "lambda";
61 protected static final String GRID_TYPE = "gridType";
62 protected static final String CHANNEL_SPACING = "channelSpacing";
63 protected static final String SPACING_MULIPLIER = "spacingMultiplier";
64 protected static final String SLOT_GRANULARITY = "slotGranularity";
65 protected static final String OCH_SIGNAL_ID = "ochSignalId";
Hyunsun Moon7080a0d2015-08-14 19:18:48 -070066 protected static final String TUNNEL_ID = "tunnelId";
Yafit Hadar52d81552015-10-07 12:26:52 +030067 protected static final String OCH_SIGNAL_TYPE = "ochSignalType";
68 protected static final String ODU_SIGNAL_ID = "oduSignalId";
69 protected static final String TRIBUTARY_PORT_NUMBER = "tributaryPortNumber";
70 protected static final String TRIBUTARY_SLOT_LEN = "tributarySlotLen";
71 protected static final String TRIBUTARY_SLOT_BITMAP = "tributarySlotBitmap";
72 protected static final String ODU_SIGNAL_TYPE = "oduSignalType";
alshabiba3a476d2015-04-10 14:35:38 -070073
Ray Milkeyc95bb9d2015-01-06 10:28:24 -080074 @Override
75 public ObjectNode encode(Criterion criterion, CodecContext context) {
Ray Milkey6d7968e2015-07-06 14:30:02 -070076 EncodeCriterionCodecHelper encoder = new EncodeCriterionCodecHelper(criterion, context);
Ray Milkeyd43fe452015-05-29 09:35:12 -070077 return encoder.encode();
78 }
Ray Milkeyc95bb9d2015-01-06 10:28:24 -080079
Ray Milkeyd43fe452015-05-29 09:35:12 -070080 @Override
81 public Criterion decode(ObjectNode json, CodecContext context) {
Ray Milkey6d7968e2015-07-06 14:30:02 -070082 DecodeCriterionCodecHelper decoder = new DecodeCriterionCodecHelper(json);
Ray Milkeyd43fe452015-05-29 09:35:12 -070083 return decoder.decode();
Ray Milkeyc95bb9d2015-01-06 10:28:24 -080084 }
Ray Milkeyc95bb9d2015-01-06 10:28:24 -080085}