How to use dhcp relay over ipsec0/wwan0 with zero MAC address?

Qingtao at
Thu Nov 5 02:08:30 UTC 2020


I am trying to use the dhcrelay on an ipsec0 interface that was built upon a
cellular modem interface, wwan0 for example. The problem I am running into
is that, the QMI qmi_wwan.c kernel driver for the cellular modem works in
the raw_ip mode and will setup wwanX relevant net_device with type ==
ARPHRD_NONE and hard_header_len == 0, since the MAC address for wwan0 only
makes sense for the host and not used on the USB link from the host to the
cellular modem.

Then the ipsec0 interface will inherit both the IP address and the MAC
address, which will upset the dhcp relay daemon: in lpf.c get_hw_addr(), the
switch(sa->sa_family) case structure will thow out the following error:

Unsupported device type 65534 for "ipsec0"

The 65534 == 0xFFFE, or ARPHRD_NONE. I am wondering if it is feasible to
change the get_hw_addr() to regard it as an normal case, for example:

+@@ -522,6 +522,11 @@ get_hw_addr(const char *name, struct har
+                       hw->hbuf[0] = HTYPE_FDDI;
+                       memcpy(&hw->hbuf[1], sa->sa_data, 6);
+                       break;
++              case ARPHRD_NONE:
++                      /* When the qmi_wwan.c kernel driver works in the
++                       * raw_ip mode the length of MAC address is zero */
++                      memset(hw, 0, sizeof(struct hardware));
++                      break;
+               default:
+                       log_fatal("Unsupported device type %ld for \"%s\"",
+                                 (long int)sa->sa_family, name);

Would this work?

Thanks in advance!


Sent from:

More information about the dhcp-users mailing list