blob: 38ea7a79f1cac01ffecea186d4c24a4f3df98772 [file] [log] [blame]
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07001/*
Brian O'Connora09fe5b2017-08-03 21:12:30 -07002 * Copyright 2014-present Open Networking Foundation
Thomas Vachuska4f1a60c2014-10-28 13:39:07 -07003 *
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 */
Brian O'Connorabafb502014-12-02 22:26:20 -080016package org.onosproject.store.serializers;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -070017
Charles Chan6a7d3672018-06-19 20:40:52 -070018import com.esotericsoftware.kryo.serializers.ClosureSerializer;
Jonathan Hartad0c3022017-02-22 14:06:01 -080019import com.google.common.collect.HashMultiset;
Jonathan Hart45727852015-01-28 13:35:54 -080020import com.google.common.collect.ImmutableList;
21import com.google.common.collect.ImmutableMap;
22import com.google.common.collect.ImmutableSet;
Madan Jampani3ca9cb62015-07-21 11:35:44 -070023import com.google.common.collect.Maps;
Saurav Das9df5b7c2017-08-14 16:44:43 -070024import com.google.common.collect.Sets;
Jonathan Hart45727852015-01-28 13:35:54 -080025import org.onlab.packet.ChassisId;
alshabibcaf1ca22015-06-25 15:18:16 -070026import org.onlab.packet.EthType;
Jonathan Hart45727852015-01-28 13:35:54 -080027import org.onlab.packet.Ip4Address;
28import org.onlab.packet.Ip4Prefix;
29import org.onlab.packet.Ip6Address;
30import org.onlab.packet.Ip6Prefix;
31import org.onlab.packet.IpAddress;
32import org.onlab.packet.IpPrefix;
33import org.onlab.packet.MacAddress;
Hyunsun Mooncf732fb2015-08-22 21:04:23 -070034import org.onlab.packet.TpPort;
Jonathan Hart45727852015-01-28 13:35:54 -080035import org.onlab.packet.VlanId;
Sho SHIMIZU63feca72015-05-07 10:44:25 -070036import org.onlab.util.Bandwidth;
Sho SHIMIZUc0e010dd2016-05-02 14:46:22 -070037import org.onlab.util.ClosedOpenRange;
Marc De Leenheerbb382352015-04-23 18:20:34 -070038import org.onlab.util.Frequency;
Carmelo Cascone17fc9e42016-05-31 11:29:21 -070039import org.onlab.util.ImmutableByteSequence;
Jonathan Hart45727852015-01-28 13:35:54 -080040import org.onlab.util.KryoNamespace;
Madan Jampani063949f2016-01-26 12:10:05 -080041import org.onlab.util.Match;
Thomas Vachuska90b453f2015-01-30 18:57:14 -080042import org.onosproject.app.ApplicationState;
Brian O'Connorabafb502014-12-02 22:26:20 -080043import org.onosproject.cluster.ControllerNode;
44import org.onosproject.cluster.DefaultControllerNode;
Madan Jampani39fff102016-02-14 13:17:28 -080045import org.onosproject.cluster.Leader;
Brian O'Connorabafb502014-12-02 22:26:20 -080046import org.onosproject.cluster.Leadership;
47import org.onosproject.cluster.LeadershipEvent;
48import org.onosproject.cluster.NodeId;
49import org.onosproject.cluster.RoleInfo;
Changhoon Yoon32b93702015-05-15 04:41:15 +090050import org.onosproject.core.ApplicationRole;
Thomas Vachuska90b453f2015-01-30 18:57:14 -080051import org.onosproject.core.DefaultApplication;
Brian O'Connorabafb502014-12-02 22:26:20 -080052import org.onosproject.core.DefaultApplicationId;
Yi Tsengfa394de2017-02-01 11:26:40 -080053import org.onosproject.core.GroupId;
Thomas Vachuska90b453f2015-01-30 18:57:14 -080054import org.onosproject.core.Version;
Madan Jampani39fff102016-02-14 13:17:28 -080055import org.onosproject.event.Change;
Brian O'Connorabafb502014-12-02 22:26:20 -080056import org.onosproject.mastership.MastershipTerm;
Marc De Leenheerbb382352015-04-23 18:20:34 -070057import org.onosproject.net.Annotations;
Sho SHIMIZU014c33a2015-04-30 11:40:37 -070058import org.onosproject.net.ChannelSpacing;
Toru Furusawa72ee30c2016-01-08 13:29:04 -080059import org.onosproject.net.CltSignalType;
Brian O'Connorabafb502014-12-02 22:26:20 -080060import org.onosproject.net.ConnectPoint;
61import org.onosproject.net.DefaultAnnotations;
62import org.onosproject.net.DefaultDevice;
63import org.onosproject.net.DefaultEdgeLink;
Madan Jampani70583972015-06-30 11:25:05 -070064import org.onosproject.net.DefaultHost;
Brian O'Connorabafb502014-12-02 22:26:20 -080065import org.onosproject.net.DefaultLink;
66import org.onosproject.net.DefaultPath;
67import org.onosproject.net.DefaultPort;
68import org.onosproject.net.Device;
69import org.onosproject.net.DeviceId;
70import org.onosproject.net.Element;
Jonathan Hart26bd8132016-04-13 10:39:55 -070071import org.onosproject.net.EncapsulationType;
Brian O'Connor562d9d32016-10-07 12:16:50 -070072import org.onosproject.net.FilteredConnectPoint;
Sho SHIMIZU014c33a2015-04-30 11:40:37 -070073import org.onosproject.net.GridType;
Brian O'Connorabafb502014-12-02 22:26:20 -080074import org.onosproject.net.HostId;
75import org.onosproject.net.HostLocation;
76import org.onosproject.net.Link;
77import org.onosproject.net.LinkKey;
Yuta HIGUCHIeb28a7c2017-01-13 18:59:27 -080078import org.onosproject.net.MarkerResource;
Sho SHIMIZU91210a72015-04-29 12:54:28 -070079import org.onosproject.net.OchSignal;
Ayaka Koshibebcb02372015-06-01 10:56:42 -070080import org.onosproject.net.OchSignalType;
Yafit Hadar5796d972015-10-15 13:16:11 +030081import org.onosproject.net.OduSignalId;
Sho SHIMIZU91210a72015-04-29 12:54:28 -070082import org.onosproject.net.OduSignalType;
Rimon Ashkenazy8ebfff02016-02-01 11:56:36 +020083import org.onosproject.net.OtuSignalType;
Brian O'Connorabafb502014-12-02 22:26:20 -080084import org.onosproject.net.Port;
85import org.onosproject.net.PortNumber;
Luca Prete670ac5d2017-02-03 15:55:43 -080086import org.onosproject.net.ResourceGroup;
Rimon Ashkenazye2410ff2015-11-10 14:11:08 +020087import org.onosproject.net.TributarySlot;
Andreas Papazois05548962016-11-23 11:36:55 +020088import org.onosproject.net.behaviour.protection.ProtectedTransportEndpointDescription;
Brian O'Connorabafb502014-12-02 22:26:20 -080089import org.onosproject.net.device.DefaultDeviceDescription;
90import org.onosproject.net.device.DefaultPortDescription;
Thomas Vachuskafdbc4c22015-05-29 15:53:01 -070091import org.onosproject.net.device.DefaultPortStatistics;
Thomas Vachuskafdbc4c22015-05-29 15:53:01 -070092import org.onosproject.net.device.PortStatistics;
Michele Santuari38dd82e2017-01-04 09:23:49 +010093import org.onosproject.net.domain.DomainIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -080094import org.onosproject.net.flow.CompletedBatchOperation;
95import org.onosproject.net.flow.DefaultFlowEntry;
96import org.onosproject.net.flow.DefaultFlowRule;
Srikanth Vavilapalli95810f52015-09-14 15:49:56 -070097import org.onosproject.net.flow.DefaultTableStatisticsEntry;
Brian O'Connorabafb502014-12-02 22:26:20 -080098import org.onosproject.net.flow.DefaultTrafficSelector;
99import org.onosproject.net.flow.DefaultTrafficTreatment;
100import org.onosproject.net.flow.FlowEntry;
101import org.onosproject.net.flow.FlowId;
Murat Parlakisikc6759e82016-06-29 03:22:22 -0700102import org.onosproject.net.flow.FlowRule;
Cem Türker3baff672017-10-12 15:09:01 +0300103import org.onosproject.net.flow.FlowRuleEvent;
Cem Türker3baff672017-10-12 15:09:01 +0300104import org.onosproject.net.flow.IndexTableId;
105import org.onosproject.net.flow.StatTriggerField;
106import org.onosproject.net.flow.StatTriggerFlag;
107import org.onosproject.net.flow.StoredFlowEntry;
108import org.onosproject.net.flow.TableId;
109import org.onosproject.net.flow.TableStatisticsEntry;
Hyunsun Moonc8fe98b2016-01-11 00:01:46 -0800110import org.onosproject.net.flow.criteria.ArpHaCriterion;
111import org.onosproject.net.flow.criteria.ArpOpCriterion;
112import org.onosproject.net.flow.criteria.ArpPaCriterion;
Brian O'Connorabafb502014-12-02 22:26:20 -0800113import org.onosproject.net.flow.criteria.Criterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700114import org.onosproject.net.flow.criteria.EthCriterion;
115import org.onosproject.net.flow.criteria.EthTypeCriterion;
Charles Chan14967c22015-12-07 11:11:50 -0800116import org.onosproject.net.flow.criteria.ExtensionCriterion;
117import org.onosproject.net.flow.criteria.ExtensionSelectorType;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700118import org.onosproject.net.flow.criteria.IPCriterion;
119import org.onosproject.net.flow.criteria.IPDscpCriterion;
120import org.onosproject.net.flow.criteria.IPEcnCriterion;
121import org.onosproject.net.flow.criteria.IPProtocolCriterion;
122import org.onosproject.net.flow.criteria.IPv6ExthdrFlagsCriterion;
123import org.onosproject.net.flow.criteria.IPv6FlowLabelCriterion;
124import org.onosproject.net.flow.criteria.IPv6NDLinkLayerAddressCriterion;
125import org.onosproject.net.flow.criteria.IPv6NDTargetAddressCriterion;
126import org.onosproject.net.flow.criteria.IcmpCodeCriterion;
127import org.onosproject.net.flow.criteria.IcmpTypeCriterion;
128import org.onosproject.net.flow.criteria.Icmpv6CodeCriterion;
129import org.onosproject.net.flow.criteria.Icmpv6TypeCriterion;
130import org.onosproject.net.flow.criteria.LambdaCriterion;
131import org.onosproject.net.flow.criteria.MetadataCriterion;
Charles Chan7ba33f42015-12-15 19:27:30 -0800132import org.onosproject.net.flow.criteria.MplsBosCriterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700133import org.onosproject.net.flow.criteria.MplsCriterion;
Sho SHIMIZU084c4ca2015-05-04 11:52:51 -0700134import org.onosproject.net.flow.criteria.OchSignalCriterion;
Sho SHIMIZUb5e6de62015-05-04 12:13:44 -0700135import org.onosproject.net.flow.criteria.OchSignalTypeCriterion;
Yafit Hadar5796d972015-10-15 13:16:11 +0300136import org.onosproject.net.flow.criteria.OduSignalIdCriterion;
137import org.onosproject.net.flow.criteria.OduSignalTypeCriterion;
Carmelo Cascone72343c52017-09-05 17:37:10 +0200138import org.onosproject.net.flow.criteria.PiCriterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700139import org.onosproject.net.flow.criteria.PortCriterion;
140import org.onosproject.net.flow.criteria.SctpPortCriterion;
141import org.onosproject.net.flow.criteria.TcpPortCriterion;
Hyunsun Moona08c5d02015-07-14 17:53:00 -0700142import org.onosproject.net.flow.criteria.TunnelIdCriterion;
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700143import org.onosproject.net.flow.criteria.UdpPortCriterion;
144import org.onosproject.net.flow.criteria.VlanIdCriterion;
145import org.onosproject.net.flow.criteria.VlanPcpCriterion;
alshabib880b6442015-11-23 22:13:04 -0800146import org.onosproject.net.flow.instructions.ExtensionTreatmentType;
Brian O'Connorabafb502014-12-02 22:26:20 -0800147import org.onosproject.net.flow.instructions.Instructions;
148import org.onosproject.net.flow.instructions.L0ModificationInstruction;
Yafit Hadar5796d972015-10-15 13:16:11 +0300149import org.onosproject.net.flow.instructions.L1ModificationInstruction;
Brian O'Connorabafb502014-12-02 22:26:20 -0800150import org.onosproject.net.flow.instructions.L2ModificationInstruction;
151import org.onosproject.net.flow.instructions.L3ModificationInstruction;
Hyunsun Moonc8bd97c2015-07-18 22:47:33 -0700152import org.onosproject.net.flow.instructions.L4ModificationInstruction;
Carmelo Cascone72343c52017-09-05 17:37:10 +0200153import org.onosproject.net.flow.instructions.PiInstruction;
Carmelo Casconee44592f2018-09-12 02:24:47 -0700154import org.onosproject.net.flow.oldbatch.FlowRuleBatchEntry;
155import org.onosproject.net.flow.oldbatch.FlowRuleBatchEvent;
156import org.onosproject.net.flow.oldbatch.FlowRuleBatchOperation;
157import org.onosproject.net.flow.oldbatch.FlowRuleBatchRequest;
Charles Chanc72271f2016-04-05 15:15:27 -0700158import org.onosproject.net.flowobjective.DefaultFilteringObjective;
159import org.onosproject.net.flowobjective.DefaultForwardingObjective;
160import org.onosproject.net.flowobjective.DefaultNextObjective;
Carmelo Cascone630966f2018-11-26 00:01:37 -0800161import org.onosproject.net.flowobjective.DefaultNextTreatment;
Charles Chan6a7d3672018-06-19 20:40:52 -0700162import org.onosproject.net.flowobjective.DefaultObjectiveContext;
Charles Chanc72271f2016-04-05 15:15:27 -0700163import org.onosproject.net.flowobjective.FilteringObjective;
164import org.onosproject.net.flowobjective.ForwardingObjective;
Carmelo Cascone630966f2018-11-26 00:01:37 -0800165import org.onosproject.net.flowobjective.IdNextTreatment;
Charles Chanc72271f2016-04-05 15:15:27 -0700166import org.onosproject.net.flowobjective.NextObjective;
Carmelo Cascone630966f2018-11-26 00:01:37 -0800167import org.onosproject.net.flowobjective.NextTreatment;
Charles Chanc72271f2016-04-05 15:15:27 -0700168import org.onosproject.net.flowobjective.Objective;
Charles Chan6a7d3672018-06-19 20:40:52 -0700169import org.onosproject.net.flowobjective.ObjectiveError;
pierventre381d4542021-01-15 17:27:48 +0100170import org.onosproject.net.group.DefaultGroupBucket;
171import org.onosproject.net.group.DefaultGroupKey;
172import org.onosproject.net.group.DefaultGroup;
173import org.onosproject.net.group.DefaultGroupDescription;
174import org.onosproject.net.group.GroupDescription;
175import org.onosproject.net.group.Group;
176import org.onosproject.net.group.GroupBuckets;
Brian O'Connorabafb502014-12-02 22:26:20 -0800177import org.onosproject.net.host.DefaultHostDescription;
178import org.onosproject.net.host.HostDescription;
179import org.onosproject.net.intent.ConnectivityIntent;
Jonathan Hart6552b8d2016-04-12 14:21:50 -0700180import org.onosproject.net.intent.FlowObjectiveIntent;
Brian O'Connora7515372015-03-25 14:45:34 -0700181import org.onosproject.net.intent.FlowRuleIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800182import org.onosproject.net.intent.HostToHostIntent;
183import org.onosproject.net.intent.Intent;
184import org.onosproject.net.intent.IntentId;
185import org.onosproject.net.intent.IntentOperation;
Brian O'Connorabafb502014-12-02 22:26:20 -0800186import org.onosproject.net.intent.IntentState;
Jonathan Hart5ec32ba2015-02-05 13:33:58 -0800187import org.onosproject.net.intent.Key;
Brian O'Connorabafb502014-12-02 22:26:20 -0800188import org.onosproject.net.intent.LinkCollectionIntent;
189import org.onosproject.net.intent.MultiPointToSinglePointIntent;
Marc De Leenheer8c2caac2015-05-28 16:37:33 -0700190import org.onosproject.net.intent.OpticalCircuitIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800191import org.onosproject.net.intent.OpticalConnectivityIntent;
Rimon Ashkenazy27438ff2016-03-22 15:57:45 +0200192import org.onosproject.net.intent.OpticalOduIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800193import org.onosproject.net.intent.OpticalPathIntent;
194import org.onosproject.net.intent.PathIntent;
195import org.onosproject.net.intent.PointToPointIntent;
Yuta HIGUCHIb360bb02016-12-08 16:40:48 -0800196import org.onosproject.net.intent.ProtectedTransportIntent;
Andreas Papazois05548962016-11-23 11:36:55 +0200197import org.onosproject.net.intent.ProtectionEndpointIntent;
Brian O'Connorabafb502014-12-02 22:26:20 -0800198import org.onosproject.net.intent.SinglePointToMultiPointIntent;
Jonathan Hart45727852015-01-28 13:35:54 -0800199import org.onosproject.net.intent.constraint.AnnotationConstraint;
Brian O'Connorabafb502014-12-02 22:26:20 -0800200import org.onosproject.net.intent.constraint.BandwidthConstraint;
201import org.onosproject.net.intent.constraint.BooleanConstraint;
Pier Luigi02778b12017-09-11 17:51:13 +0200202import org.onosproject.net.intent.constraint.DomainConstraint;
Jonathan Hart26bd8132016-04-13 10:39:55 -0700203import org.onosproject.net.intent.constraint.EncapsulationConstraint;
jaegonkim7e876632017-01-25 06:01:49 +0900204import org.onosproject.net.intent.constraint.HashedPathSelectionConstraint;
Brian O'Connorabafb502014-12-02 22:26:20 -0800205import org.onosproject.net.intent.constraint.LatencyConstraint;
206import org.onosproject.net.intent.constraint.LinkTypeConstraint;
Antonio Marsico4f68ec92017-03-09 11:16:32 +0100207import org.onosproject.net.intent.constraint.NonDisruptiveConstraint;
Brian O'Connorabafb502014-12-02 22:26:20 -0800208import org.onosproject.net.intent.constraint.ObstacleConstraint;
Jonathan Hart96c5a4a2015-07-31 14:23:33 -0700209import org.onosproject.net.intent.constraint.PartialFailureConstraint;
Yuta HIGUCHI625fb642016-09-01 16:10:24 -0700210import org.onosproject.net.intent.constraint.ProtectionConstraint;
Brian O'Connorabafb502014-12-02 22:26:20 -0800211import org.onosproject.net.intent.constraint.WaypointConstraint;
212import org.onosproject.net.link.DefaultLinkDescription;
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900213import org.onosproject.net.meter.MeterCellId;
214import org.onosproject.net.meter.MeterCellId.MeterCellType;
Gamze Abaka65f27f12018-07-09 06:40:24 +0000215import org.onosproject.net.meter.MeterFailReason;
alshabib10c810b2015-08-18 16:59:04 -0700216import org.onosproject.net.meter.MeterId;
Jian Li11260a02016-05-19 13:07:22 -0700217import org.onosproject.net.packet.DefaultOutboundPacket;
218import org.onosproject.net.packet.DefaultPacketRequest;
219import org.onosproject.net.packet.PacketPriority;
Carmelo Cascone87892e22017-11-13 16:01:29 -0800220import org.onosproject.net.pi.model.PiActionId;
221import org.onosproject.net.pi.model.PiActionParamId;
222import org.onosproject.net.pi.model.PiActionProfileId;
Carmelo Cascone87892e22017-11-13 16:01:29 -0800223import org.onosproject.net.pi.model.PiCounterId;
224import org.onosproject.net.pi.model.PiCounterType;
225import org.onosproject.net.pi.model.PiMatchFieldId;
Carmelo Cascone72343c52017-09-05 17:37:10 +0200226import org.onosproject.net.pi.model.PiMatchType;
Carmelo Cascone87892e22017-11-13 16:01:29 -0800227import org.onosproject.net.pi.model.PiMeterId;
228import org.onosproject.net.pi.model.PiMeterType;
Carmelo Cascone3977ea42019-02-28 13:43:42 -0800229import org.onosproject.net.pi.model.PiPacketMetadataId;
Carmelo Cascone87892e22017-11-13 16:01:29 -0800230import org.onosproject.net.pi.model.PiPacketOperationType;
Carmelo Cascone72343c52017-09-05 17:37:10 +0200231import org.onosproject.net.pi.model.PiPipeconfId;
Carmelo Cascone87892e22017-11-13 16:01:29 -0800232import org.onosproject.net.pi.model.PiTableId;
233import org.onosproject.net.pi.model.PiTableType;
Carmelo Cascone72343c52017-09-05 17:37:10 +0200234import org.onosproject.net.pi.runtime.PiAction;
Carmelo Cascone72343c52017-09-05 17:37:10 +0200235import org.onosproject.net.pi.runtime.PiActionParam;
Carmelo Casconecb4327a2018-09-11 15:17:23 -0700236import org.onosproject.net.pi.runtime.PiActionProfileGroup;
237import org.onosproject.net.pi.runtime.PiActionProfileGroupHandle;
238import org.onosproject.net.pi.runtime.PiActionProfileGroupId;
239import org.onosproject.net.pi.runtime.PiActionProfileMember;
240import org.onosproject.net.pi.runtime.PiActionProfileMemberHandle;
241import org.onosproject.net.pi.runtime.PiActionProfileMemberId;
Carmelo Cascone9db4d5c2019-04-16 17:36:33 -0700242import org.onosproject.net.pi.runtime.PiCloneSessionEntry;
243import org.onosproject.net.pi.runtime.PiCloneSessionEntryHandle;
steven308017632e152018-10-20 00:51:08 +0800244import org.onosproject.net.pi.runtime.PiCounterCell;
Carmelo Cascone87892e22017-11-13 16:01:29 -0800245import org.onosproject.net.pi.runtime.PiCounterCellData;
Carmelo Cascone9db4d5c2019-04-16 17:36:33 -0700246import org.onosproject.net.pi.runtime.PiCounterCellHandle;
Carmelo Cascone87892e22017-11-13 16:01:29 -0800247import org.onosproject.net.pi.runtime.PiCounterCellId;
Carmelo Cascone1a7e4f92017-11-20 23:04:02 -0800248import org.onosproject.net.pi.runtime.PiEntity;
249import org.onosproject.net.pi.runtime.PiEntityType;
Carmelo Cascone72343c52017-09-05 17:37:10 +0200250import org.onosproject.net.pi.runtime.PiExactFieldMatch;
251import org.onosproject.net.pi.runtime.PiFieldMatch;
Carmelo Cascone87b9b392017-10-02 18:33:20 +0200252import org.onosproject.net.pi.runtime.PiGroupKey;
Carmelo Cascone326ad2d2017-11-28 18:09:13 -0800253import org.onosproject.net.pi.runtime.PiHandle;
Carmelo Cascone72343c52017-09-05 17:37:10 +0200254import org.onosproject.net.pi.runtime.PiLpmFieldMatch;
255import org.onosproject.net.pi.runtime.PiMatchKey;
Carmelo Cascone9db4d5c2019-04-16 17:36:33 -0700256import org.onosproject.net.pi.runtime.PiMeterBand;
257import org.onosproject.net.pi.runtime.PiMeterCellConfig;
258import org.onosproject.net.pi.runtime.PiMeterCellHandle;
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900259import org.onosproject.net.pi.runtime.PiMeterCellId;
Carmelo Cascone9db4d5c2019-04-16 17:36:33 -0700260import org.onosproject.net.pi.runtime.PiMulticastGroupEntry;
261import org.onosproject.net.pi.runtime.PiMulticastGroupEntryHandle;
Carmelo Cascone3977ea42019-02-28 13:43:42 -0800262import org.onosproject.net.pi.runtime.PiPacketMetadata;
Carmelo Cascone72343c52017-09-05 17:37:10 +0200263import org.onosproject.net.pi.runtime.PiPacketOperation;
Carmelo Cascone9db4d5c2019-04-16 17:36:33 -0700264import org.onosproject.net.pi.runtime.PiPreEntry;
265import org.onosproject.net.pi.runtime.PiPreEntryHandle;
266import org.onosproject.net.pi.runtime.PiPreEntryType;
267import org.onosproject.net.pi.runtime.PiPreReplica;
Carmelo Cascone72343c52017-09-05 17:37:10 +0200268import org.onosproject.net.pi.runtime.PiRangeFieldMatch;
Carmelo Cascone9db4d5c2019-04-16 17:36:33 -0700269import org.onosproject.net.pi.runtime.PiRegisterCell;
270import org.onosproject.net.pi.runtime.PiRegisterCellId;
Carmelo Cascone72343c52017-09-05 17:37:10 +0200271import org.onosproject.net.pi.runtime.PiTableAction;
272import org.onosproject.net.pi.runtime.PiTableEntry;
Carmelo Cascone326ad2d2017-11-28 18:09:13 -0800273import org.onosproject.net.pi.runtime.PiTableEntryHandle;
Carmelo Casconee44592f2018-09-12 02:24:47 -0700274import org.onosproject.net.pi.runtime.PiTernaryFieldMatch;
Carmelo Cascone1a7e4f92017-11-20 23:04:02 -0800275import org.onosproject.net.pi.service.PiTranslatable;
276import org.onosproject.net.pi.service.PiTranslatedEntity;
Jian Li11260a02016-05-19 13:07:22 -0700277import org.onosproject.net.provider.ProviderId;
Thomas Vachuskaeb851cd2016-07-21 15:41:05 -0700278import org.onosproject.net.region.DefaultRegion;
279import org.onosproject.net.region.Region;
280import org.onosproject.net.region.RegionId;
Sho SHIMIZUe18cb122016-02-22 21:04:56 -0800281import org.onosproject.net.resource.ContinuousResource;
282import org.onosproject.net.resource.ContinuousResourceId;
283import org.onosproject.net.resource.DiscreteResource;
Sho SHIMIZUc0e010dd2016-05-02 14:46:22 -0700284import org.onosproject.net.resource.DiscreteResourceCodec;
Sho SHIMIZUe18cb122016-02-22 21:04:56 -0800285import org.onosproject.net.resource.DiscreteResourceId;
286import org.onosproject.net.resource.ResourceAllocation;
Naoki Shiotabd1974c2016-04-29 18:44:17 -0700287import org.onosproject.net.resource.ResourceConsumerId;
Changhoon Yoone71dfa42015-12-04 21:49:25 +0900288import org.onosproject.security.Permission;
Brian O'Connorabafb502014-12-02 22:26:20 -0800289import org.onosproject.store.Timestamp;
Madan Jampani39fff102016-02-14 13:17:28 -0800290import org.onosproject.store.primitives.MapUpdate;
Madan Jampanicadd70b2016-02-08 13:45:43 -0800291import org.onosproject.store.primitives.TransactionId;
Madan Jampani50589ac2015-06-08 11:38:46 -0700292import org.onosproject.store.service.MapEvent;
Jonathan Hart46bf89b2017-02-27 15:56:42 -0800293import org.onosproject.store.service.MultimapEvent;
Madan Jampani50589ac2015-06-08 11:38:46 -0700294import org.onosproject.store.service.SetEvent;
Madan Jampani35708a92016-07-06 10:48:19 -0700295import org.onosproject.store.service.Task;
Carmelo Cascone72343c52017-09-05 17:37:10 +0200296import org.onosproject.store.service.TransactionLog;
Madan Jampanie97fec42015-02-17 10:53:42 -0800297import org.onosproject.store.service.Versioned;
Madan Jampani35708a92016-07-06 10:48:19 -0700298import org.onosproject.store.service.WorkQueueStats;
Simon Huntd7395c82016-10-20 17:54:01 -0700299import org.onosproject.ui.model.topo.UiTopoLayoutId;
Jordan Halterman980a8c12017-09-22 18:01:19 -0700300import org.onosproject.upgrade.Upgrade;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700301
Charles Chan6a7d3672018-06-19 20:40:52 -0700302import java.lang.invoke.SerializedLambda;
Jonathan Hart45727852015-01-28 13:35:54 -0800303import java.net.URI;
Arnav Jainefb57e52019-07-09 14:24:10 -0700304import java.net.URL;
Jonathan Hart45727852015-01-28 13:35:54 -0800305import java.time.Duration;
306import java.util.ArrayList;
307import java.util.Arrays;
Jordi Ortiz1b1a3b42017-03-03 12:36:54 +0100308import java.util.BitSet;
Jonathan Hart45727852015-01-28 13:35:54 -0800309import java.util.Collections;
310import java.util.HashMap;
311import java.util.HashSet;
Sho SHIMIZU6c9e33a2016-01-07 18:45:27 -0800312import java.util.LinkedHashSet;
Jonathan Hart45727852015-01-28 13:35:54 -0800313import java.util.LinkedList;
314import java.util.Optional;
Madan Jampani86940d92015-05-06 11:47:57 -0700315import java.util.concurrent.ConcurrentHashMap;
316import java.util.concurrent.CopyOnWriteArraySet;
Madan Jampani6db0b442015-07-07 20:27:59 -0700317import java.util.concurrent.atomic.AtomicBoolean;
318import java.util.concurrent.atomic.AtomicInteger;
319import java.util.concurrent.atomic.AtomicLong;
Yuta HIGUCHI47c40882014-10-10 18:44:37 -0700320
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700321public final class KryoNamespaces {
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700322
Jonathan Hart679d24d2016-05-13 13:29:53 -0700323 public static final int BASIC_MAX_SIZE = 50;
Jordan Halterman1d4d1892018-01-10 14:11:18 -0800324
325 /**
326 * WARNING: Do not change ordering of registrations!
327 *
328 * Serial IDs are automatically assigned to types registered via the {@link KryoNamespace} API.
329 * ISSU depends on consistent type IDs for registered serializers across versions.
330 * New types must be appended to the registration chain unless an explicit type ID is assigned by
331 * calling {@link KryoNamespace.Builder#nextId(int)}.
332 * If existing types need to be removed, use {@link KryoNamespace.Builder#nextId(int)} to preserve a consistent
333 * ordering of type IDs.
334 */
Yuta HIGUCHI1aa249c2014-11-05 17:40:28 -0800335 public static final KryoNamespace BASIC = KryoNamespace.newBuilder()
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800336 .nextId(KryoNamespace.FLOATING_ID)
337 .register(byte[].class)
Madan Jampani6db0b442015-07-07 20:27:59 -0700338 .register(AtomicBoolean.class)
339 .register(AtomicInteger.class)
340 .register(AtomicLong.class)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800341 .register(new ImmutableListSerializer(),
342 ImmutableList.class,
343 ImmutableList.of(1).getClass(),
Jimmy Jine9b7a022016-08-12 16:56:48 -0700344 ImmutableList.of(1, 2).getClass(),
345 ImmutableList.of(1, 2, 3).subList(1, 3).getClass())
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800346 .register(new ImmutableSetSerializer(),
347 ImmutableSet.class,
348 ImmutableSet.of().getClass(),
349 ImmutableSet.of(1).getClass(),
350 ImmutableSet.of(1, 2).getClass())
351 .register(new ImmutableMapSerializer(),
352 ImmutableMap.class,
353 ImmutableMap.of().getClass(),
354 ImmutableMap.of("a", 1).getClass(),
355 ImmutableMap.of("R", 2, "D", 2).getClass())
Madan Jampani10666e52016-02-11 16:46:42 -0800356 .register(Collections.unmodifiableSet(Collections.emptySet()).getClass())
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800357 .register(HashMap.class)
Madan Jampani86940d92015-05-06 11:47:57 -0700358 .register(ConcurrentHashMap.class)
359 .register(CopyOnWriteArraySet.class)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800360 .register(ArrayList.class,
361 LinkedList.class,
Sho SHIMIZU6c9e33a2016-01-07 18:45:27 -0800362 HashSet.class,
363 LinkedHashSet.class
alshabib1aa58142016-02-17 15:37:56 -0800364 )
Jonathan Hartad0c3022017-02-22 14:06:01 -0800365 .register(HashMultiset.class)
Saurav Das9df5b7c2017-08-14 16:44:43 -0700366 .register(Sets.class)
Madan Jampani3ca9cb62015-07-21 11:35:44 -0700367 .register(Maps.immutableEntry("a", "b").getClass())
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800368 .register(new ArraysAsListSerializer(), Arrays.asList().getClass())
369 .register(Collections.singletonList(1).getClass())
370 .register(Duration.class)
Yuta HIGUCHIae1d2102014-11-25 19:26:01 -0800371 .register(Collections.emptySet().getClass())
Sho SHIMIZU166e61e2015-01-21 18:07:12 -0800372 .register(Optional.class)
Jonathan Hart45727852015-01-28 13:35:54 -0800373 .register(Collections.emptyList().getClass())
Marc De Leenheer4a1c1fa2015-06-01 18:08:56 -0700374 .register(Collections.singleton(Object.class).getClass())
Jian Li83fa0412016-05-06 12:33:49 -0700375 .register(int[].class)
376 .register(long[].class)
377 .register(short[].class)
378 .register(double[].class)
379 .register(float[].class)
380 .register(char[].class)
381 .register(String[].class)
382 .register(boolean[].class)
Charles Chan6a7d3672018-06-19 20:40:52 -0700383 // For serializing lambda functions
384 .register(Object[].class)
385 .register(Class.class)
386 .register(SerializedLambda.class)
387 .register(new ClosureSerializer(), ClosureSerializer.Closure.class)
HIGUCHI Yutab2d0fd82016-05-17 20:34:58 -0700388 .build("BASIC");
Yuta HIGUCHI1aa249c2014-11-05 17:40:28 -0800389
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700390 /**
Thomas Vachuskaa10137c2018-04-03 16:45:59 -0700391 * KryoNamespace which can serialize ONF misc classes.
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700392 */
Jonathan Hart679d24d2016-05-13 13:29:53 -0700393 public static final int MISC_MAX_SIZE = 30;
Jordan Halterman1d4d1892018-01-10 14:11:18 -0800394
395 /**
396 * WARNING: Do not change ordering of registrations!
397 *
398 * Serial IDs are automatically assigned to types registered via the {@link KryoNamespace} API.
399 * ISSU depends on consistent type IDs for registered serializers across versions.
400 * New types must be appended to the registration chain unless an explicit type ID is assigned by
401 * calling {@link KryoNamespace.Builder#nextId(int)}.
402 * If existing types need to be removed, use {@link KryoNamespace.Builder#nextId(int)} to preserve a consistent
403 * ordering of type IDs.
404 */
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700405 public static final KryoNamespace MISC = KryoNamespace.newBuilder()
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800406 .nextId(KryoNamespace.FLOATING_ID)
407 .register(new IpPrefixSerializer(), IpPrefix.class)
408 .register(new Ip4PrefixSerializer(), Ip4Prefix.class)
409 .register(new Ip6PrefixSerializer(), Ip6Prefix.class)
410 .register(new IpAddressSerializer(), IpAddress.class)
411 .register(new Ip4AddressSerializer(), Ip4Address.class)
412 .register(new Ip6AddressSerializer(), Ip6Address.class)
413 .register(new MacAddressSerializer(), MacAddress.class)
Madan Jampani063949f2016-01-26 12:10:05 -0800414 .register(Match.class)
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700415 .register(VlanId.class)
Sho SHIMIZUdee78712015-04-30 09:33:52 -0700416 .register(Frequency.class)
Sho SHIMIZU63feca72015-05-07 10:44:25 -0700417 .register(Bandwidth.class)
Sho SHIMIZU31f37ed2016-01-08 18:45:54 -0800418 .register(Bandwidth.bps(1L).getClass())
419 .register(Bandwidth.bps(1.0).getClass())
HIGUCHI Yutab2d0fd82016-05-17 20:34:58 -0700420 .build("MISC");
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700421
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800422 /**
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700423 * KryoNamespace which can serialize API bundle classes.
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700424 */
Jonathan Hart679d24d2016-05-13 13:29:53 -0700425 public static final int API_MAX_SIZE = 499;
Jordan Halterman1d4d1892018-01-10 14:11:18 -0800426
427 /**
428 * WARNING: Do not change ordering of registrations!
429 *
430 * Serial IDs are automatically assigned to types registered via the {@link KryoNamespace} API.
431 * ISSU depends on consistent type IDs for registered serializers across versions.
432 * New types must be appended to the registration chain unless an explicit type ID is assigned by
433 * calling {@link KryoNamespace.Builder#nextId(int)}.
434 * If existing types need to be removed, use {@link KryoNamespace.Builder#nextId(int)} to preserve a consistent
435 * ordering of type IDs.
436 */
Yuta HIGUCHI8d143d22014-10-19 23:15:09 -0700437 public static final KryoNamespace API = KryoNamespace.newBuilder()
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800438 .nextId(KryoNamespace.INITIAL_ID)
Yuta HIGUCHI1aa249c2014-11-05 17:40:28 -0800439 .register(BASIC)
Jonathan Hart679d24d2016-05-13 13:29:53 -0700440 .nextId(KryoNamespace.INITIAL_ID + BASIC_MAX_SIZE)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800441 .register(MISC)
Jonathan Hart679d24d2016-05-13 13:29:53 -0700442 .nextId(KryoNamespace.INITIAL_ID + BASIC_MAX_SIZE + MISC_MAX_SIZE)
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700443 .register(
Arnav Jainefb57e52019-07-09 14:24:10 -0700444 URL.class,
alshabib10c810b2015-08-18 16:59:04 -0700445 Instructions.MeterInstruction.class,
Cem Türker3baff672017-10-12 15:09:01 +0300446 Instructions.StatTriggerInstruction.class,
447 StatTriggerFlag.class,
448 StatTriggerField.class,
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900449 MeterCellId.class,
450 MeterCellType.class,
alshabib10c810b2015-08-18 16:59:04 -0700451 MeterId.class,
Gamze Abaka65f27f12018-07-09 06:40:24 +0000452 MeterFailReason.class,
Thomas Vachuska90b453f2015-01-30 18:57:14 -0800453 Version.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700454 ControllerNode.State.class,
Thomas Vachuska90b453f2015-01-30 18:57:14 -0800455 ApplicationState.class,
Changhoon Yoon32b93702015-05-15 04:41:15 +0900456 ApplicationRole.class,
Thomas Vachuska90b453f2015-01-30 18:57:14 -0800457 DefaultApplication.class,
Changhoon Yoone71dfa42015-12-04 21:49:25 +0900458 Permission.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700459 Device.Type.class,
Thomas Vachuskad16ce182014-10-29 17:25:29 -0700460 Port.Type.class,
alshabib7911a052014-10-16 17:49:37 -0700461 ChassisId.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700462 DefaultControllerNode.class,
463 DefaultDevice.class,
Madan Jampani53e44e62014-10-07 12:39:51 -0700464 DefaultDeviceDescription.class,
Madan Jampani70583972015-06-30 11:25:05 -0700465 DefaultHost.class,
Madan Jampani2ff05592014-10-10 15:42:47 -0700466 DefaultLinkDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700467 Port.class,
Madan Jampani53e44e62014-10-07 12:39:51 -0700468 DefaultPortDescription.class,
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700469 Element.class,
Yuta HIGUCHI9ee60f62014-10-09 10:00:01 -0700470 Link.Type.class,
Thomas Vachuska57126fe2014-11-11 17:13:24 -0800471 Link.State.class,
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700472 Timestamp.class,
Madan Jampani39fff102016-02-14 13:17:28 -0800473 Change.class,
474 Leader.class,
Madan Jampani1ee91782014-11-20 20:24:24 -0800475 Leadership.class,
476 LeadershipEvent.class,
477 LeadershipEvent.Type.class,
Madan Jampani35708a92016-07-06 10:48:19 -0700478 Task.class,
479 WorkQueueStats.class,
Yuta HIGUCHI5fa3dc02014-10-15 17:08:13 -0700480 HostId.class,
481 HostDescription.class,
Madan Jampani38b250d2014-10-17 11:02:38 -0700482 DefaultHostDescription.class,
Madan Jampani117aaae2014-10-23 10:04:05 -0700483 DefaultFlowEntry.class,
484 StoredFlowEntry.class,
Yuta HIGUCHI2fcfde92014-10-20 18:37:14 -0700485 DefaultFlowRule.class,
Carmelo Cascone41605742017-06-19 15:46:44 +0900486 TableId.class,
487 IndexTableId.class,
Murat Parlakisikc6759e82016-06-29 03:22:22 -0700488 FlowRule.FlowRemoveReason.class,
alshabib42947782015-03-31 14:59:06 -0700489 DefaultPacketRequest.class,
490 PacketPriority.class,
alshabibf6c2ede2014-10-22 23:31:50 -0700491 FlowEntry.FlowEntryState.class,
Ray Milkey97db3502016-12-07 14:46:34 -0800492 FlowEntry.FlowLiveType.class,
Yuta HIGUCHI2809bf32014-10-20 22:44:12 -0700493 FlowId.class,
Yuta HIGUCHI85d58d12014-10-20 23:59:44 -0700494 DefaultTrafficSelector.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700495 PortCriterion.class,
496 MetadataCriterion.class,
497 EthCriterion.class,
alshabibcaf1ca22015-06-25 15:18:16 -0700498 EthType.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700499 EthTypeCriterion.class,
500 VlanIdCriterion.class,
501 VlanPcpCriterion.class,
502 IPDscpCriterion.class,
503 IPEcnCriterion.class,
504 IPProtocolCriterion.class,
505 IPCriterion.class,
Hyunsun Mooncf732fb2015-08-22 21:04:23 -0700506 TpPort.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700507 TcpPortCriterion.class,
508 UdpPortCriterion.class,
509 SctpPortCriterion.class,
510 IcmpTypeCriterion.class,
511 IcmpCodeCriterion.class,
512 IPv6FlowLabelCriterion.class,
513 Icmpv6TypeCriterion.class,
514 Icmpv6CodeCriterion.class,
515 IPv6NDTargetAddressCriterion.class,
516 IPv6NDLinkLayerAddressCriterion.class,
517 MplsCriterion.class,
Charles Chan7ba33f42015-12-15 19:27:30 -0800518 MplsBosCriterion.class,
Hyunsun Moona08c5d02015-07-14 17:53:00 -0700519 TunnelIdCriterion.class,
Sho SHIMIZUfbc80e52015-04-28 10:41:58 -0700520 IPv6ExthdrFlagsCriterion.class,
521 LambdaCriterion.class,
Sho SHIMIZU084c4ca2015-05-04 11:52:51 -0700522 OchSignalCriterion.class,
Sho SHIMIZUb5e6de62015-05-04 12:13:44 -0700523 OchSignalTypeCriterion.class,
Yafit Hadar5796d972015-10-15 13:16:11 +0300524 OduSignalIdCriterion.class,
525 OduSignalTypeCriterion.class,
Hyunsun Moonc8fe98b2016-01-11 00:01:46 -0800526 ArpOpCriterion.class,
527 ArpHaCriterion.class,
528 ArpPaCriterion.class,
Yuta HIGUCHI85d58d12014-10-20 23:59:44 -0700529 Criterion.class,
530 Criterion.Type.class,
531 DefaultTrafficTreatment.class,
Charles Chan7efabeb2015-09-28 15:12:19 -0700532 Instructions.NoActionInstruction.class,
Yuta HIGUCHI40d01772014-10-21 00:08:44 -0700533 Instructions.OutputInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800534 Instructions.GroupInstruction.class,
Steffen Gebert7c446e42016-06-21 23:22:20 +0200535 Instructions.SetQueueInstruction.class,
Srikanth Vavilapalli23181912015-05-04 09:48:09 -0700536 Instructions.TableTypeTransition.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700537 L0ModificationInstruction.class,
538 L0ModificationInstruction.L0SubType.class,
Sho SHIMIZUc6827092015-05-05 17:58:34 -0700539 L0ModificationInstruction.ModOchSignalInstruction.class,
Yafit Hadar5796d972015-10-15 13:16:11 +0300540 L1ModificationInstruction.class,
541 L1ModificationInstruction.L1SubType.class,
542 L1ModificationInstruction.ModOduSignalIdInstruction.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700543 L2ModificationInstruction.class,
544 L2ModificationInstruction.L2SubType.class,
545 L2ModificationInstruction.ModEtherInstruction.class,
Jian Li11260a02016-05-19 13:07:22 -0700546 L2ModificationInstruction.ModMplsHeaderInstruction.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700547 L2ModificationInstruction.ModVlanIdInstruction.class,
548 L2ModificationInstruction.ModVlanPcpInstruction.class,
Jian Li11260a02016-05-19 13:07:22 -0700549 L2ModificationInstruction.ModVlanHeaderInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800550 L2ModificationInstruction.ModMplsLabelInstruction.class,
Saurav Das8a0732e2015-11-20 15:27:53 -0800551 L2ModificationInstruction.ModMplsBosInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800552 L2ModificationInstruction.ModMplsTtlInstruction.class,
Hyunsun Moona08c5d02015-07-14 17:53:00 -0700553 L2ModificationInstruction.ModTunnelIdInstruction.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700554 L3ModificationInstruction.class,
555 L3ModificationInstruction.L3SubType.class,
556 L3ModificationInstruction.ModIPInstruction.class,
Pavlin Radoslavovfebe82c2015-02-11 19:08:15 -0800557 L3ModificationInstruction.ModIPv6FlowLabelInstruction.class,
Pavlin Radoslavov1d218662015-02-13 11:34:30 -0800558 L3ModificationInstruction.ModTtlInstruction.class,
Hyunsun Moonc8bd97c2015-07-18 22:47:33 -0700559 L4ModificationInstruction.class,
560 L4ModificationInstruction.L4SubType.class,
561 L4ModificationInstruction.ModTransportPortInstruction.class,
Yuta HIGUCHI9def0472014-10-23 15:51:10 -0700562 RoleInfo.class,
Brian O'Connor72cb19a2015-01-16 16:14:41 -0800563 FlowRuleBatchEvent.class,
564 FlowRuleBatchEvent.Type.class,
565 FlowRuleBatchRequest.class,
Yuta HIGUCHI9def0472014-10-23 15:51:10 -0700566 FlowRuleBatchOperation.class,
Madan Jampani87e276b2015-06-02 10:49:47 -0700567 FlowRuleEvent.class,
568 FlowRuleEvent.Type.class,
Yuta HIGUCHI9def0472014-10-23 15:51:10 -0700569 CompletedBatchOperation.class,
570 FlowRuleBatchEntry.class,
Yuta HIGUCHI087019b2014-10-28 21:07:56 -0700571 FlowRuleBatchEntry.FlowRuleOperation.class,
572 IntentId.class,
573 IntentState.class,
Brian O'Connor4e6c17d2015-02-19 11:40:05 -0800574 //Key.class, is abstract
575 Key.of(1L, new DefaultApplicationId(0, "bar")).getClass(), //LongKey.class
576 Key.of("foo", new DefaultApplicationId(0, "bar")).getClass(), //StringKey.class
Yuta HIGUCHI087019b2014-10-28 21:07:56 -0700577 Intent.class,
578 ConnectivityIntent.class,
579 PathIntent.class,
580 DefaultPath.class,
581 DefaultEdgeLink.class,
582 HostToHostIntent.class,
583 PointToPointIntent.class,
Jonathan Hart68fef9d2014-10-29 17:30:03 -0700584 MultiPointToSinglePointIntent.class,
Michele Santuari4a338072014-11-05 18:38:55 +0100585 SinglePointToMultiPointIntent.class,
Brian O'Connora7515372015-03-25 14:45:34 -0700586 FlowRuleIntent.class,
Brian O'Connor41718fc2014-10-30 16:57:21 -0700587 LinkCollectionIntent.class,
588 OpticalConnectivityIntent.class,
589 OpticalPathIntent.class,
Marc De Leenheer8c2caac2015-05-28 16:37:33 -0700590 OpticalCircuitIntent.class,
Rimon Ashkenazy27438ff2016-03-22 15:57:45 +0200591 OpticalOduIntent.class,
Jonathan Hart6552b8d2016-04-12 14:21:50 -0700592 FlowObjectiveIntent.class,
Sho SHIMIZUf33b8932016-01-25 18:43:32 -0800593 DiscreteResource.class,
594 ContinuousResource.class,
Sho SHIMIZUf33b8932016-01-25 18:43:32 -0800595 DiscreteResourceId.class,
596 ContinuousResourceId.class,
Sho SHIMIZU1f5e5912015-08-10 17:00:00 -0700597 ResourceAllocation.class,
Naoki Shiotabd1974c2016-04-29 18:44:17 -0700598 ResourceConsumerId.class,
Luca Prete670ac5d2017-02-03 15:55:43 -0800599 ResourceGroup.class,
Sho SHIMIZUcd4bac82014-11-11 17:07:25 -0800600 // Constraints
Thomas Vachuska7d0032b2014-11-04 17:39:57 -0800601 BandwidthConstraint.class,
602 LinkTypeConstraint.class,
Sho SHIMIZUcd4bac82014-11-11 17:07:25 -0800603 LatencyConstraint.class,
604 WaypointConstraint.class,
605 ObstacleConstraint.class,
606 AnnotationConstraint.class,
Brian O'Connor72a034c2014-11-26 18:24:23 -0800607 BooleanConstraint.class,
Jonathan Hart96c5a4a2015-07-31 14:23:33 -0700608 PartialFailureConstraint.class,
jcc3d4e14a2015-04-21 11:32:05 +0800609 IntentOperation.class,
Thomas Vachuskafdbc4c22015-05-29 15:53:01 -0700610 DefaultAnnotations.class,
611 PortStatistics.class,
Brian O'Connorce2d8b52015-07-29 16:24:13 -0700612 DefaultPortStatistics.class,
Srikanth Vavilapalli95810f52015-09-14 15:49:56 -0700613 TableStatisticsEntry.class,
Charles Chanc72271f2016-04-05 15:15:27 -0700614 DefaultTableStatisticsEntry.class,
Jonathan Hart26bd8132016-04-13 10:39:55 -0700615 EncapsulationConstraint.class,
616 EncapsulationType.class,
jaegonkim7e876632017-01-25 06:01:49 +0900617 HashedPathSelectionConstraint.class,
Antonio Marsico4f68ec92017-03-09 11:16:32 +0100618 NonDisruptiveConstraint.class,
Charles Chanc72271f2016-04-05 15:15:27 -0700619 // Flow Objectives
620 DefaultForwardingObjective.class,
621 ForwardingObjective.Flag.class,
622 DefaultFilteringObjective.class,
623 FilteringObjective.Type.class,
624 DefaultNextObjective.class,
Carmelo Cascone630966f2018-11-26 00:01:37 -0800625 NextTreatment.class,
626 NextTreatment.Type.class,
627 DefaultNextTreatment.class,
628 IdNextTreatment.class,
Charles Chanc72271f2016-04-05 15:15:27 -0700629 NextObjective.Type.class,
Charles Chan6a7d3672018-06-19 20:40:52 -0700630 Objective.Operation.class,
631 DefaultObjectiveContext.class,
632 ObjectiveError.class
Marc De Leenheerbb382352015-04-23 18:20:34 -0700633 )
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800634 .register(new DefaultApplicationIdSerializer(), DefaultApplicationId.class)
Jonathan Hartd9df7bd2015-11-10 17:10:25 -0800635 .register(new UriSerializer(), URI.class)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800636 .register(new NodeIdSerializer(), NodeId.class)
637 .register(new ProviderIdSerializer(), ProviderId.class)
638 .register(new DeviceIdSerializer(), DeviceId.class)
639 .register(new PortNumberSerializer(), PortNumber.class)
640 .register(new DefaultPortSerializer(), DefaultPort.class)
641 .register(new LinkKeySerializer(), LinkKey.class)
642 .register(new ConnectPointSerializer(), ConnectPoint.class)
Brian O'Connor562d9d32016-10-07 12:16:50 -0700643 .register(new FilteredConnectPointSerializer(), FilteredConnectPoint.class)
Yuta HIGUCHI91768e32014-11-22 05:06:35 -0800644 .register(new DefaultLinkSerializer(), DefaultLink.class)
645 .register(new MastershipTermSerializer(), MastershipTerm.class)
646 .register(new HostLocationSerializer(), HostLocation.class)
647 .register(new DefaultOutboundPacketSerializer(), DefaultOutboundPacket.class)
Ayaka Koshibe08e457a2015-06-25 17:11:54 -0700648 .register(new AnnotationsSerializer(), DefaultAnnotations.class)
Jonathan Hart3c259162015-10-21 21:31:19 -0700649 .register(new ExtensionInstructionSerializer(), Instructions.ExtensionInstructionWrapper.class)
Charles Chan14967c22015-12-07 11:11:50 -0800650 .register(new ExtensionCriterionSerializer(), ExtensionCriterion.class)
Thomas Vachuskaeb851cd2016-07-21 15:41:05 -0700651 .register(Region.class)
652 .register(Region.Type.class)
653 .register(RegionId.class)
654 .register(DefaultRegion.class)
Simon Huntd7395c82016-10-20 17:54:01 -0700655 .register(UiTopoLayoutId.class)
Charles Chan14967c22015-12-07 11:11:50 -0800656 .register(ExtensionSelectorType.class)
alshabib880b6442015-11-23 22:13:04 -0800657 .register(ExtensionTreatmentType.class)
Madan Jampanicadd70b2016-02-08 13:45:43 -0800658 .register(TransactionId.class)
Jordan Halterman948d6592017-04-20 17:18:24 -0700659 .register(TransactionLog.class)
Madan Jampani39fff102016-02-14 13:17:28 -0800660 .register(MapUpdate.class)
661 .register(MapUpdate.Type.class)
Madan Jampanie97fec42015-02-17 10:53:42 -0800662 .register(Versioned.class)
Madan Jampani50589ac2015-06-08 11:38:46 -0700663 .register(MapEvent.class)
664 .register(MapEvent.Type.class)
Jonathan Hart46bf89b2017-02-27 15:56:42 -0800665 .register(MultimapEvent.class)
666 .register(MultimapEvent.Type.class)
Madan Jampani50589ac2015-06-08 11:38:46 -0700667 .register(SetEvent.class)
668 .register(SetEvent.Type.class)
Yi Tsengfa394de2017-02-01 11:26:40 -0800669 .register(GroupId.class)
pierventre381d4542021-01-15 17:27:48 +0100670 .register(DefaultGroup.class,
671 DefaultGroupBucket.class,
672 DefaultGroupDescription.class,
673 DefaultGroupKey.class,
674 GroupDescription.Type.class,
675 Group.GroupState.class,
676 GroupBuckets.class)
Marc De Leenheerbb382352015-04-23 18:20:34 -0700677 .register(Annotations.class)
Sho SHIMIZU014c33a2015-04-30 11:40:37 -0700678 .register(OduSignalType.class)
Ayaka Koshibebcb02372015-06-01 10:56:42 -0700679 .register(OchSignalType.class)
Sho SHIMIZU014c33a2015-04-30 11:40:37 -0700680 .register(GridType.class)
681 .register(ChannelSpacing.class)
Toru Furusawa72ee30c2016-01-08 13:29:04 -0800682 .register(CltSignalType.class)
Sho SHIMIZU91210a72015-04-29 12:54:28 -0700683 .register(OchSignal.class)
Yafit Hadar5796d972015-10-15 13:16:11 +0300684 .register(OduSignalId.class)
Rimon Ashkenazye2410ff2015-11-10 14:11:08 +0200685 .register(TributarySlot.class)
Rimon Ashkenazy8ebfff02016-02-01 11:56:36 +0200686 .register(OtuSignalType.class)
Michele Santuari4b6019e2014-12-19 11:31:45 +0100687 .register(
sanghob35a6192015-04-01 13:05:26 -0700688 org.onlab.packet.MplsLabel.class,
689 org.onlab.packet.MPLS.class
Marc De Leenheerbb382352015-04-23 18:20:34 -0700690 )
Sho SHIMIZUc0e010dd2016-05-02 14:46:22 -0700691 .register(ClosedOpenRange.class)
Sho SHIMIZUc0e010dd2016-05-02 14:46:22 -0700692 .register(DiscreteResourceCodec.class)
Carmelo Cascone804c0012016-06-23 13:05:40 -0700693 .register(new ImmutableByteSequenceSerializer(), ImmutableByteSequence.class)
Yuta HIGUCHI4859b3a2016-08-16 12:58:23 -0700694 .register(PathIntent.ProtectionType.class)
Yuta HIGUCHI625fb642016-09-01 16:10:24 -0700695 .register(ProtectionConstraint.class)
Andreas Papazois05548962016-11-23 11:36:55 +0200696 .register(ProtectedTransportEndpointDescription.class)
697 .register(ProtectionEndpointIntent.class)
Yuta HIGUCHIb360bb02016-12-08 16:40:48 -0800698 .register(ProtectedTransportIntent.class)
Yuta HIGUCHIeb28a7c2017-01-13 18:59:27 -0800699 .register(MarkerResource.class)
Jordi Ortiz1b1a3b42017-03-03 12:36:54 +0100700 .register(new BitSetSerializer(), BitSet.class)
Michele Santuari38dd82e2017-01-04 09:23:49 +0100701 .register(DomainIntent.class)
Pier Luigi02778b12017-09-11 17:51:13 +0200702 .register(DomainConstraint.class)
Carmelo Cascone72343c52017-09-05 17:37:10 +0200703 .register(
704 // PI model
Carmelo Cascone87892e22017-11-13 16:01:29 -0800705 PiActionId.class,
706 PiActionParamId.class,
707 PiActionProfileId.class,
Carmelo Cascone4c289b72019-01-22 15:30:45 -0800708 PiPacketMetadataId.class,
Carmelo Cascone87892e22017-11-13 16:01:29 -0800709 PiCounterId.class,
710 PiCounterType.class,
711 PiMatchFieldId.class,
Carmelo Cascone72343c52017-09-05 17:37:10 +0200712 PiMatchType.class,
Carmelo Cascone87892e22017-11-13 16:01:29 -0800713 PiMeterId.class,
Frank Wangd7e3b4b2017-09-24 13:37:54 +0900714 PiMeterCellId.class,
Carmelo Cascone87892e22017-11-13 16:01:29 -0800715 PiMeterType.class,
716 PiPacketOperationType.class,
Carmelo Cascone72343c52017-09-05 17:37:10 +0200717 PiPipeconfId.class,
Carmelo Cascone87892e22017-11-13 16:01:29 -0800718 PiTableId.class,
719 PiTableType.class,
Carmelo Cascone72343c52017-09-05 17:37:10 +0200720 // PI Runtime
721 PiAction.class,
Carmelo Cascone9db4d5c2019-04-16 17:36:33 -0700722 PiActionParam.class,
Carmelo Casconecb4327a2018-09-11 15:17:23 -0700723 PiActionProfileGroup.class,
724 PiActionProfileGroupHandle.class,
pierventre381d4542021-01-15 17:27:48 +0100725 PiActionProfileGroup.WeightedMember.class,
Carmelo Casconecb4327a2018-09-11 15:17:23 -0700726 PiActionProfileGroupId.class,
727 PiActionProfileMember.class,
728 PiActionProfileMemberHandle.class,
729 PiActionProfileMemberId.class,
Carmelo Cascone9db4d5c2019-04-16 17:36:33 -0700730 PiCloneSessionEntry.class,
731 PiCloneSessionEntryHandle.class,
steven308017632e152018-10-20 00:51:08 +0800732 PiCounterCell.class,
Carmelo Cascone87892e22017-11-13 16:01:29 -0800733 PiCounterCellData.class,
Carmelo Cascone9db4d5c2019-04-16 17:36:33 -0700734 PiCounterCellHandle.class,
Carmelo Cascone87892e22017-11-13 16:01:29 -0800735 PiCounterCellId.class,
Carmelo Cascone1a7e4f92017-11-20 23:04:02 -0800736 PiEntity.class,
737 PiEntityType.class,
Carmelo Cascone72343c52017-09-05 17:37:10 +0200738 PiExactFieldMatch.class,
739 PiFieldMatch.class,
Carmelo Cascone87b9b392017-10-02 18:33:20 +0200740 PiGroupKey.class,
Carmelo Cascone326ad2d2017-11-28 18:09:13 -0800741 PiHandle.class,
Carmelo Cascone72343c52017-09-05 17:37:10 +0200742 PiLpmFieldMatch.class,
743 PiMatchKey.class,
Carmelo Cascone9db4d5c2019-04-16 17:36:33 -0700744 PiMeterBand.class,
745 PiMeterCellConfig.class,
746 PiMeterCellHandle.class,
747 PiMeterCellId.class,
748 PiMulticastGroupEntry.class,
749 PiMulticastGroupEntryHandle.class,
750 PiPacketMetadata.class,
Carmelo Cascone72343c52017-09-05 17:37:10 +0200751 PiPacketOperation.class,
Carmelo Cascone9db4d5c2019-04-16 17:36:33 -0700752 PiPreEntry.class,
753 PiPreEntryHandle.class,
754 PiPreEntryType.class,
755 PiPreReplica.class,
Carmelo Cascone72343c52017-09-05 17:37:10 +0200756 PiRangeFieldMatch.class,
Carmelo Cascone9db4d5c2019-04-16 17:36:33 -0700757 PiRegisterCell.class,
758 PiRegisterCellId.class,
Carmelo Cascone72343c52017-09-05 17:37:10 +0200759 PiTableAction.class,
760 PiTableEntry.class,
Carmelo Cascone9db4d5c2019-04-16 17:36:33 -0700761 PiTableEntryHandle.class,
Carmelo Cascone72343c52017-09-05 17:37:10 +0200762 PiTernaryFieldMatch.class,
Carmelo Cascone1a7e4f92017-11-20 23:04:02 -0800763 // PI service
764 PiTranslatedEntity.class,
765 PiTranslatable.class,
Carmelo Cascone72343c52017-09-05 17:37:10 +0200766 // Other
767 PiCriterion.class,
768 PiInstruction.class
769 )
Jordan Halterman980a8c12017-09-22 18:01:19 -0700770 .register(Upgrade.class)
771 .register(Upgrade.Status.class)
Patryk Konopka6f017132017-11-21 10:44:25 +0100772 .register(L3ModificationInstruction.ModArpEthInstruction.class,
773 L3ModificationInstruction.ModArpEthInstruction.class,
774 L3ModificationInstruction.ModArpOpInstruction.class,
775 L3ModificationInstruction.ModArpIPInstruction.class)
Jonathan Hart8accdc52020-01-28 14:10:47 -0800776 .register(Instructions.MetadataInstruction.class)
HIGUCHI Yutab2d0fd82016-05-17 20:34:58 -0700777 .build("API");
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700778
Jonathan Hart679d24d2016-05-13 13:29:53 -0700779 /**
780 * Kryo registration Id for user custom registration.
781 */
782 public static final int BEGIN_USER_CUSTOM_ID = API_MAX_SIZE + 1;
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700783
784 // not to be instantiated
alshabib1aa58142016-02-17 15:37:56 -0800785 private KryoNamespaces() {
786 }
Yuta HIGUCHI03fec1f2014-10-03 09:13:50 -0700787}