diff --git a/src/dhcp-manager/nm-dhcp-client.c b/src/dhcp-manager/nm-dhcp-client.c
index 4bbcdeb..6c3eb76 100644
--- a/src/dhcp-manager/nm-dhcp-client.c
+++ b/src/dhcp-manager/nm-dhcp-client.c
@@ -1073,15 +1073,24 @@ process_classful_routes (GHashTable *options, NMIP4Config *ip4_config)
 			continue;
 		}
 
-		// FIXME: ensure the IP addresse and route are sane
+		// FIXME: ensure the IP address and route are sane
 
 		memset (&route, 0, sizeof (route));
 		route.network = rt_addr;
-		route.plen = 32;
+		/* RFC 3442:
+		   The Static Routes option (option 33) does not provide a subnet mask
+		   for each route - it is assumed that the subnet mask is implicit in
+		   whatever network number is specified in each route entry */
+		if (rt_addr && htonl(0x000000FF)) {
+			route.plen = 32;
+		}
+		else {
+			route.plen = nm_utils_ip4_get_default_prefix (rt_addr);
+		}
 		route.gateway = rt_route;
 
 		nm_ip4_config_add_route (ip4_config, &route);
-		nm_log_info (LOGD_DHCP, "  static route %s gw %s", *s, *(s + 1));
+		nm_log_info (LOGD_DHCP, "  static route %s/%d gw %s", *s, route.plen, *(s + 1));
 	}
 
 out:
