/**
* Copyright 2011, Big Switch Networks, Inc.
* Originally created by Amer Tahir
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License. You may obtain
* a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
* WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
* License for the specific language governing permissions and limitations
* under the License.
**/
package net.floodlightcontroller.firewall;
import java.io.IOException;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
/**
* Serialize a FirewallRule object
* Implemented to output easily readable MAC, IP addresses
* @author Jason Parraga
*/
public class FirewallRuleSerializer extends JsonSerializer<FirewallRule> {
@Override
public void serialize(FirewallRule rule, JsonGenerator jGen,
SerializerProvider serializer) throws IOException,
JsonProcessingException {
jGen.writeStartObject();
jGen.writeNumberField("ruleid", rule.ruleid);
jGen.writeStringField("dpid", rule.dpid.toString());
jGen.writeNumberField("in_port", rule.in_port.getPortNumber());
jGen.writeStringField("dl_src", rule.dl_src.toString());
jGen.writeStringField("dl_dst", rule.dl_dst.toString());
jGen.writeNumberField("dl_type", rule.dl_type.getValue());
jGen.writeStringField("nw_src_prefix", rule.nw_src_prefix_and_mask.getValue().toString());
jGen.writeNumberField("nw_src_maskbits", rule.nw_src_prefix_and_mask.getMask().asCidrMaskLength());
jGen.writeStringField("nw_dst_prefix", rule.nw_dst_prefix_and_mask.getValue().toString());
jGen.writeNumberField("nw_dst_maskbits", rule.nw_dst_prefix_and_mask.getMask().asCidrMaskLength());
jGen.writeNumberField("nw_proto", rule.nw_proto.getIpProtocolNumber());
jGen.writeNumberField("tp_src", rule.tp_src.getPort());
jGen.writeNumberField("tp_dst", rule.tp_dst.getPort());
jGen.writeBooleanField("any_dpid", rule.any_dpid);
jGen.writeBooleanField("any_in_port", rule.any_in_port);
jGen.writeBooleanField("any_dl_src", rule.any_dl_src);
jGen.writeBooleanField("any_dl_dst", rule.any_dl_dst);
jGen.writeBooleanField("any_dl_type", rule.any_dl_type);
jGen.writeBooleanField("any_nw_src", rule.any_nw_src);
jGen.writeBooleanField("any_nw_dst", rule.any_nw_dst);
jGen.writeBooleanField("any_nw_proto", rule.any_nw_proto);
jGen.writeBooleanField("any_tp_src", rule.any_tp_src);
jGen.writeBooleanField("any_tp_dst", rule.any_tp_dst);
jGen.writeNumberField("priority", rule.priority);
jGen.writeStringField("action", String.valueOf(rule.action));
jGen.writeEndObject();
}
}