As things stand now the Gateways() object only tries to configure wireless interfaces as gateways. This isn't sufficiently generic.
Due to tests performed at the USA Science and Engineering Festival this weekend, we need to make it possible to configure /usb?/ interfaces for tethered cellular phones.
Here's what we have right now:
Gateways() can already configure wireless interfaces. It also re-runs babeld and propagates the gateway route.
Ethernet interfaces are configured with ifplugd. It also re-runs babeld and propagates the gateway route.
Other network interfaces need to be configured with dhcpcd and, of course, babeld needs to be re-run to propagate the gateway route.
Modified Gateways() to look for wireless, Ethernet, and USB network interfaces and try to configure all of them however it can.
USB network interfaces (named /usb[0-9]*/i) are considered wired interfaces (hey, they have a cable on them) and are added to network.sqlite when detected.
Fixed in commit 0293c2d.