diff --git a/openstack/networking/v2/extensions/layer3/routers/requests.go b/openstack/networking/v2/extensions/layer3/routers/requests.go
index 1ffc136..ed0ea07 100644
--- a/openstack/networking/v2/extensions/layer3/routers/requests.go
+++ b/openstack/networking/v2/extensions/layer3/routers/requests.go
@@ -49,6 +49,7 @@
 	AdminStateUp *bool
 	Distributed  *bool
 	TenantID     string
+	DriverOpts   map[string]string
 	GatewayInfo  *GatewayInfo
 }
 
@@ -61,29 +62,41 @@
 // an external network (it is external if its `router:external' field is set to
 // true).
 func Create(c *gophercloud.ServiceClient, opts CreateOpts) CreateResult {
-	type router struct {
-		Name         *string      `json:"name,omitempty"`
-		AdminStateUp *bool        `json:"admin_state_up,omitempty"`
-		Distributed  *bool        `json:"distributed,omitempty"`
-		TenantID     *string      `json:"tenant_id,omitempty"`
-		GatewayInfo  *GatewayInfo `json:"external_gateway_info,omitempty"`
-	}
 
 	type request struct {
-		Router router `json:"router"`
+		Router map[string]interface{} `json:"router"`
 	}
 
-	reqBody := request{Router: router{
-		Name:         gophercloud.MaybeString(opts.Name),
-		AdminStateUp: opts.AdminStateUp,
-		Distributed:  opts.Distributed,
-		TenantID:     gophercloud.MaybeString(opts.TenantID),
-	}}
+	routerMap := make(map[string]interface{})
+
+	if gophercloud.MaybeString(opts.Name) != nil {
+		routerMap["name"] = opts.Name
+	}
+
+	if opts.AdminStateUp != nil {
+		routerMap["admin_state_up"] = opts.AdminStateUp
+	}
+
+	if opts.Distributed != nil {
+		routerMap["distributed"] = opts.Distributed
+	}
+
+	if gophercloud.MaybeString(opts.TenantID) != nil {
+		routerMap["tenant_id"] = opts.TenantID
+	}
 
 	if opts.GatewayInfo != nil {
-		reqBody.Router.GatewayInfo = opts.GatewayInfo
+		routerMap["external_gateway_info"] = opts.GatewayInfo
 	}
 
+	if opts.DriverOpts != nil {
+		for k, v := range opts.DriverOpts {
+			routerMap[k] = v
+		}
+	}
+
+	reqBody := request{Router: routerMap}
+
 	var res CreateResult
 	_, res.Err = c.Post(rootURL(c), reqBody, &res.Body, nil)
 	return res
diff --git a/openstack/networking/v2/extensions/layer3/routers/results.go b/openstack/networking/v2/extensions/layer3/routers/results.go
index 4534123..9b811cb 100644
--- a/openstack/networking/v2/extensions/layer3/routers/results.go
+++ b/openstack/networking/v2/extensions/layer3/routers/results.go
@@ -48,6 +48,9 @@
 	// other than its own.
 	TenantID string `json:"tenant_id" mapstructure:"tenant_id"`
 
+	// Whether router is Exclusive or Shared.
+	RouterType string `json:"router_type" mapstructure:"router_type"`
+
 	Routes []Route `json:"routes" mapstructure:"routes"`
 }
 
