Index: /tools/gformat.py
===================================================================
--- /tools/gformat.py	(revision 10733)
+++ /tools/gformat.py	(revision 10734)
@@ -397,8 +397,10 @@
 \n""").render(datadump)
 
+  dhcp_out = defaultdict(list)
   for iface_key in datadump['autogen_iface_keys']:
+    ifname = datadump[iface_key]['autogen_ifname']
     if not datadump[iface_key].has_key('comment'):
       datadump[iface_key]['comment'] = None
-    output += "## %(interface)s - %(desc)s - %(comment)s\n" % datadump[iface_key]
+    dhcp_out[ifname].append("  ## %(interface)s - %(desc)s - %(comment)s\n" % datadump[iface_key])
 
     (addr, mask) = datadump[iface_key]['ip'].split('/')
@@ -409,5 +411,5 @@
       (dhcp_start, dhcp_stop) = datadump[iface_key]['dhcp'].split('-')
     except (AttributeError, ValueError):
-      output += "subnet %(subnet)s netmask %(netmask)s {\n  ### not autoritive\n}\n\n" % datadump[iface_key]
+      dhcp_out[ifname].append("  subnet %(subnet)s netmask %(netmask)s {\n    ### not autoritive\n  }\n" % datadump[iface_key])
       continue
 
@@ -415,12 +417,14 @@
     datadump[iface_key]['dhcp_start'] = dhcp_part + "." + dhcp_start
     datadump[iface_key]['dhcp_stop'] =  dhcp_part + "." + dhcp_stop
-    output += """\
-subnet %(subnet)s netmask %(netmask)s {
-  range %(dhcp_start)s %(dhcp_stop)s;
-  option routers %(addr)s;
-  option domain-name-servers %(addr)s;
-}
-\n""" % datadump[iface_key]
-
+    dhcp_out[ifname].append("""\
+   subnet %(subnet)s netmask %(netmask)s {
+     range %(dhcp_start)s %(dhcp_stop)s;
+     option routers %(addr)s;
+     option domain-name-servers %(addr)s;
+   }
+""" % datadump[iface_key])
+
+  for ifname,value in dhcp_out.iteritems():
+    output += ("shared-network %s {\n" % ifname) + ''.join(value)  + '}\n\n'
   return output
 
