/**
* 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 net.floodlightcontroller.packet.IPv4;
import net.floodlightcontroller.util.MACAddress;
import com.fasterxml.jackson.core.JsonGenerator;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.JsonSerializer;
import com.fasterxml.jackson.databind.SerializerProvider;
import org.openflow.util.HexString;
/**
* 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", HexString.toHexString(rule.dpid));
jGen.writeNumberField("in_port", rule.in_port);
jGen.writeStringField("dl_src",String.valueOf(MACAddress.valueOf(rule.dl_src)));
jGen.writeStringField("dl_dst", String.valueOf(MACAddress.valueOf(rule.dl_dst)));
jGen.writeNumberField("dl_type", rule.dl_type);
jGen.writeStringField("nw_src_prefix", IPv4.fromIPv4Address(rule.nw_src_prefix));
jGen.writeNumberField("nw_src_maskbits", rule.nw_src_maskbits);
jGen.writeStringField("nw_dst_prefix", IPv4.fromIPv4Address(rule.nw_dst_prefix));
jGen.writeNumberField("nw_dst_maskbits", rule.nw_dst_maskbits);
jGen.writeNumberField("nw_proto", rule.nw_proto);
jGen.writeNumberField("tp_src", rule.tp_src);
jGen.writeNumberField("tp_dst", rule.tp_dst);
jGen.writeBooleanField("wildcard_dpid", rule.wildcard_dpid);
jGen.writeBooleanField("wildcard_in_port", rule.wildcard_in_port);
jGen.writeBooleanField("wildcard_dl_src", rule.wildcard_dl_src);
jGen.writeBooleanField("wildcard_dl_dst", rule.wildcard_dl_dst);
jGen.writeBooleanField("wildcard_dl_type", rule.wildcard_dl_type);
jGen.writeBooleanField("wildcard_nw_src", rule.wildcard_nw_src);
jGen.writeBooleanField("wildcard_nw_dst", rule.wildcard_nw_dst);
jGen.writeBooleanField("wildcard_nw_proto", rule.wildcard_nw_proto);
jGen.writeBooleanField("wildcard_tp_src", rule.wildcard_tp_src);
jGen.writeBooleanField("wildcard_tp_dst", rule.wildcard_tp_dst);
jGen.writeNumberField("priority", rule.priority);
jGen.writeStringField("action", String.valueOf(rule.action));
jGen.writeEndObject();
}
}