diff -ru cloud-init-0.7.6/cloudinit/netinfo.py cloud-init-0.7.6-modify/cloudinit/netinfo.py
--- cloud-init-0.7.6/cloudinit/netinfo.py	2014-10-10 08:26:25.000000000 -0700
+++ cloud-init-0.7.6-modify/cloudinit/netinfo.py	2015-09-17 15:05:41.299270875 -0700
@@ -93,49 +93,50 @@
 
     return devs
 
-
 def route_info():
-    (route_out, _err) = util.subp(["netstat", "-rn"])
+    (route_out, _err) = util.subp(["ip", "route"])
     routes = []
-    entries = route_out.splitlines()[1:]
+    entries = route_out.splitlines()
     for line in entries:
         if not line:
             continue
         toks = line.split()
-
-        # FreeBSD shows 6 items in the routing table:
-        #  Destination  Gateway    Flags Refs    Use  Netif Expire
-        #  default      10.65.0.1  UGS      0  34920 vtnet0
-        #
-        # Linux netstat shows 2 more:
-        #  Destination  Gateway    Genmask  Flags MSS Window irtt Iface
-        #  0.0.0.0      10.65.0.1  0.0.0.0  UG      0 0         0 eth0
-        if (len(toks) < 6 or toks[0] == "Kernel" or
-                toks[0] == "Destination" or toks[0] == "Internet" or
-                toks[0] == "Internet6" or toks[0] == "Routing"):
-            continue
-
-        if len(toks) < 8:
-            toks.append("-")
-            toks.append("-")
-            toks[7] = toks[5]
-            toks[5] = "-"
+        dest = toks[0].split('/')
+        listlen = len(dest)
+        if listlen == 1:
+            subnet = "32"
+        else:
+            subnet = dest[1]
+        if toks[0] == "default":
+            gat = toks[2]
+            mask = "0.0.0.0"
+            dest[0] = "0.0.0.0"
+            dev = toks[4]
+            df = "yes"
+        else:
+            gat = "0.0.0.0"
+            dev = toks[2]
+            df = "no"
+
+            if subnet == "32":
+                mask = "255.255.255.255"
+            if subnet == "24":
+                mask = "255.255.255.0"
+            if subnet == "16":
+                mask = "255.255.0.0"
+            if subnet == "8":
+                mask = "255.0.0.0"
 
         entry = {
-            'destination': toks[0],
-            'gateway': toks[1],
-            'genmask': toks[2],
-            'flags': toks[3],
-            'metric': toks[4],
-            'ref': toks[5],
-            'use': toks[6],
-            'iface': toks[7],
+            'destination': dest[0],
+            'gateway': gat,
+            'genmask': mask,
+            'iface': dev,
+            'DefGateway': df,
         }
-
         routes.append(entry)
     return routes
 
-
 def getgateway():
     routes = []
     try:
@@ -143,11 +144,10 @@
     except:
         pass
     for r in routes:
-        if r['flags'].find("G") >= 0:
+        if r['DefGateway'] == "yes":
             return "%s[%s]" % (r['gateway'], r['iface'])
     return None
 
-
 def netdev_pformat():
     lines = []
     try:
@@ -177,13 +177,13 @@
         routes = None
     if routes is not None:
         fields = ['Route', 'Destination', 'Gateway',
-                  'Genmask', 'Interface', 'Flags']
+                  'Genmask', 'Interface', 'IsDefaultGateway']
         tbl = PrettyTable(fields)
         for (n, r) in enumerate(routes):
             route_id = str(n)
             tbl.add_row([route_id, r['destination'],
                         r['gateway'], r['genmask'],
-                        r['iface'], r['flags']])
+                        r['iface'], r['DefGateway']])
         route_s = tbl.get_string()
         max_len = len(max(route_s.splitlines(), key=len))
         header = util.center("Route info", "+", max_len)