CORD-339 Network config host provider

* Implement new application org.onosproject.netcfghost
* Implement BasicHostConfig to include IP and location information
    - Update network-cfg.json to add host config example
    - Add network-cfg-2x2-leaf-spine.json for 2x2 leaf-spine network in SegmentRouting
* Update Segment Rounting
    - Punt ARP packets
      (which is done by HostLocationProvider previously)
    - Check existing hosts when device connected or configured

Change-Id: I03986ddc8203d740b5bf26903e3dbf866d4d4600
diff --git a/tools/package/config/samples/network-cfg.json b/tools/package/config/samples/network-cfg.json
index 9e9257e..a6bcafc 100644
--- a/tools/package/config/samples/network-cfg.json
+++ b/tools/package/config/samples/network-cfg.json
@@ -1,27 +1,27 @@
 {
     "ports" : {
-	"of:0000000000000002/1" : {
-	    "interfaces" : [
-		{
-		    "ips" : [ "192.168.10.101/24" ],
-		    "mac" : "08:9e:01:82:38:68",
-		    "vlan" : "100"
-		}
-	    ]
-	},
-	"of:0000000000000002/20" : {
-	    "interfaces" : [
-		{
-		    "ips" : [ "192.168.20.101/24" ],
-		    "mac" : "08:9e:01:82:38:68",
-		    "vlan" : "200"
-		}
-	    ]
-	}
+    "of:0000000000000002/1" : {
+        "interfaces" : [
+        {
+            "ips" : [ "192.168.10.101/24" ],
+            "mac" : "08:9e:01:82:38:68",
+            "vlan" : "100"
+        }
+        ]
+    },
+    "of:0000000000000002/2" : {
+        "interfaces" : [
+        {
+            "ips" : [ "192.168.20.101/24" ],
+            "mac" : "08:9e:01:82:38:68",
+            "vlan" : "200"
+        }
+        ]
+    }
     },
     "devices" : {
-    	"of:0000000000000002" : {
-    		"segmentrouting" : {
+        "of:0000000000000002" : {
+            "segmentrouting" : {
                 "name" : "Leaf-R1",
                 "nodeSid" : 101,
                 "routerIp" : "10.0.1.254",
@@ -32,36 +32,54 @@
                     { "sid" : 200, "ports" : [4, 5] }
                 ]
             }
-    	},
-    	"of:0000000000000191" : {
-    		"segmentrouting" : {
+        },
+        "of:0000000000000191" : {
+            "segmentrouting" : {
                 "name" : "Spine-R1",
                 "nodeSid" : 105,
                 "routerIp" : "192.168.0.11",
                 "routerMac" : "00:00:01:00:11:80",
                 "isEdgeRouter" : false
             }
-    	}
+        }
     },
     "apps" : {
-	"org.onosproject.router" : {
-	    "bgp" : {
-		"bgpSpeakers" : [
-		    {
-			"connectPoint" : "of:00000000000000aa/10",
-			"peers" : [
-			    "192.168.10.1"
-			]
-		    },
-		    {
-			"connectPoint" : "of:00000000000000aa/20",
-			"peers" : [
-			    "192.168.20.1"
-			]
-		    }
-		]
-	    }
-	}
+    "org.onosproject.router" : {
+        "bgp" : {
+        "bgpSpeakers" : [
+            {
+            "connectPoint" : "of:00000000000000aa/10",
+            "peers" : [
+                "192.168.10.1"
+            ]
+            },
+            {
+            "connectPoint" : "of:00000000000000aa/20",
+            "peers" : [
+                "192.168.20.1"
+            ]
+            }
+        ]
+        }
+    }
+    },
+    "hosts" : {
+        "00:00:00:00:00:01/4093": {
+            "basic": {
+                "ips": [
+                    "10.0.1.1"
+                ],
+                "location": "of:0000000000000001/3"
+            }
+        },
+        "00:00:00:00:00:02/4093": {
+            "basic": {
+                "ips": [
+                    "10.0.1.2"
+                ],
+                "location": "of:0000000000000001/4"
+            }
+        }
     }
 }