+static bool
+parse_gateway_option(struct static_proto_state *state, struct uci_option *o, bool v6)
+{
+ struct device_route *route;
+ const char *str = o->v.string;
+ int af = v6 ? AF_INET6 : AF_INET;
+
+ route = calloc(1, sizeof(*route));
+ if (!inet_pton(af, str, &route->nexthop)) {
+ interface_add_error(state->iface, "proto-static",
+ "INVALID_GATEWAY", &str, 1);
+ free(route);
+ return false;
+ }
+ route->mask = 0;
+ route->flags = DEVADDR_DEVICE | (v6 ? DEVADDR_INET6 : DEVADDR_INET4);
+ interface_add_route(state->iface, route);
+
+ return true;
+}
+