diff --git a/Shorewall/Perl/Shorewall/Providers.pm b/Shorewall/Perl/Shorewall/Providers.pm
index 7240717..f9567c0 100644
--- a/Shorewall/Perl/Shorewall/Providers.pm
+++ b/Shorewall/Perl/Shorewall/Providers.pm
@@ -730,7 +730,7 @@ sub start_providers() {
     emit  ( '#',
 	    '# Capture the default route(s) if we don\'t have it (them) already.',
 	    '#',
-	    '[ -f ${VARDIR}/default_route ] || $IP -' . $family . ' route list | grep -E \'^\s*(default |nexthop )\' > ${VARDIR}/default_route',
+	    "[ -f \${VARDIR}/default_route ] || \$IP -$family route ls | save_default_route > \${VARDIR}/default_route",
 	    '#',
 	    '# Initialize the file that holds \'undo\' commands',
 	    '#',
diff --git a/Shorewall/Perl/prog.header b/Shorewall/Perl/prog.header
index 7461fa4..3c37d43 100644
--- a/Shorewall/Perl/prog.header
+++ b/Shorewall/Perl/prog.header
@@ -505,6 +505,17 @@ undo_routing() {
 }
 
 #
+# Save the default route
+#
+save_default_route() {
+    awk \
+    'BEGIN        {default=0;}; \
+     /^default /  {default=1; print; next}; \
+     /nexthop/    {if (default == 1 ) {print ; next} }; \
+                  { default=0; };'
+}
+
+#
 # Restore the default route that was in place before the initial 'shorewall start'
 #
 restore_default_route() {
diff --git a/Shorewall/Perl/prog.header6 b/Shorewall/Perl/prog.header6
index 588fd89..e708e88 100644
--- a/Shorewall/Perl/prog.header6
+++ b/Shorewall/Perl/prog.header6
@@ -493,6 +493,17 @@ undo_routing() {
 }
 
 #
+# Save the default route
+#
+save_default_route() {
+    awk \
+    'BEGIN        {default=0;}; \
+     /^default /  {default=1; print; next}; \
+     /nexthop/    {if (default == 1 ) {print ; next} }; \
+                  { default=0; };'
+}
+
+#
 # Restore the default route that was in place before the initial 'shorewall start'
 #
 restore_default_route() {
