Added ability to configure a global vlan used for all ARP packets sent from the controller
diff --git a/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
index 79cca4b..28f97ce 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/BgpRoute.java
@@ -122,6 +122,7 @@
 	private Map<InetAddress, BgpPeer> bgpPeers;
 	private SwitchPort bgpdAttachmentPoint;
 	private MACAddress bgpdMacAddress;
+	private short vlan;
 	
 	//True when all switches have connected
 	private volatile boolean switchesConnected = false;
@@ -183,8 +184,8 @@
 		}
 	}
 	
-	private void readGatewaysConfiguration(String gatewaysFilename){
-		File gatewaysFile = new File(gatewaysFilename);
+	private void readConfiguration(String configFilename){
+		File gatewaysFile = new File(configFilename);
 		ObjectMapper mapper = new ObjectMapper();
 		
 		try {
@@ -205,6 +206,7 @@
 					new Port(config.getBgpdAttachmentPort()));
 			
 			bgpdMacAddress = config.getBgpdMacAddress();
+			vlan = config.getVlan();
 		} catch (JsonParseException e) {
 			log.error("Error in JSON file", e);
 			System.exit(1);
@@ -313,7 +315,7 @@
 		}
 		log.debug("Config file set to {}", configFilename);
 		
-		readGatewaysConfiguration(configFilename);
+		readConfiguration(configFilename);
 	}
 	
 	@Override
@@ -322,7 +324,7 @@
 		topologyService.addListener(this);
 		floodlightProvider.addOFSwitchListener(this);
 		
-		proxyArp.startUp();
+		proxyArp.startUp(vlan);
 		
 		floodlightProvider.addOFMessageListener(OFType.PACKET_IN, proxyArp);
 		
diff --git a/src/main/java/net/onrc/onos/ofcontroller/bgproute/Configuration.java b/src/main/java/net/onrc/onos/ofcontroller/bgproute/Configuration.java
index 1d90edc..7fabc72 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/bgproute/Configuration.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/bgproute/Configuration.java
@@ -12,6 +12,7 @@
 	private long bgpdAttachmentDpid;
 	private short bgpdAttachmentPort;
 	private MACAddress bgpdMacAddress;
+	private short vlan;
 	private List<String> switches;
 	private List<Interface> interfaces;
 	private List<BgpPeer> peers;
@@ -50,6 +51,15 @@
 	public List<String> getSwitches() {
 		return Collections.unmodifiableList(switches);
 	}
+	
+	@JsonProperty("vlan")
+	public void setVlan(short vlan) {
+		this.vlan = vlan;
+	}
+	
+	public short getVlan() {
+		return vlan;
+	}
 
 	@JsonProperty("switches")
 	public void setSwitches(List<String> switches) {
diff --git a/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java b/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java
index b6a9591..0151212 100644
--- a/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java
+++ b/src/main/java/net/onrc/onos/ofcontroller/proxyarp/ProxyArpManager.java
@@ -52,6 +52,9 @@
 	private final ILayer3InfoService layer3;
 	private final IRestApiService restApi;
 	
+	private short vlan;
+	private static final short NO_VLAN = 0;
+	
 	private final ArpCache arpCache;
 
 	private final SetMultimap<InetAddress, ArpRequest> arpRequests;
@@ -117,7 +120,10 @@
 				HashMultimap.<InetAddress, ArpRequest>create());
 	}
 	
-	public void startUp() {
+	public void startUp(short vlan) {
+		this.vlan = vlan;
+		log.info("vlan set to {}", this.vlan);
+		
 		restApi.addRestletRoutable(new ArpWebRoutable());
 		
 		Timer arpTimer = new Timer("arp-processing");
@@ -361,6 +367,11 @@
 			.setEtherType(Ethernet.TYPE_ARP)
 			.setPayload(arpRequest);
 		
+		if (vlan != NO_VLAN) {
+			eth.setVlanID(vlan)
+			   .setPriorityCode((byte)0);
+		}
+		
 		sendArpRequestToSwitches(ipAddress, eth.serialize());
 	}
 	
@@ -492,12 +503,19 @@
 			.setTargetHardwareAddress(arpRequest.getSenderHardwareAddress())
 			.setTargetProtocolAddress(arpRequest.getSenderProtocolAddress());
 		
+
+		
 		Ethernet eth = new Ethernet();
 		eth.setDestinationMACAddress(arpRequest.getSenderHardwareAddress())
 			.setSourceMACAddress(targetMac.toBytes())
 			.setEtherType(Ethernet.TYPE_ARP)
 			.setPayload(arpReply);
 		
+		if (vlan != NO_VLAN) {
+			eth.setVlanID(vlan)
+			   .setPriorityCode((byte)0);
+		}
+		
 		List<OFAction> actions = new ArrayList<OFAction>();
 		actions.add(new OFActionOutput(port));