i found out how to do this while reading the freebsd stf(4) driver.
-/* $OpenBSD: if_mobileip.c,v 1.7 2018/02/12 02:55:40 dlg Exp $ */
+/* $OpenBSD: if_mobileip.c,v 1.8 2018/02/18 23:53:17 dlg Exp $ */
/*
* Copyright (c) 2016 David Gwynne <dlg@openbsd.org>
{
struct mobileip_softc *sc = ifp->if_softc;
struct ifreq *ifr = (struct ifreq *)data;
+ struct ifaddr *ifa = (struct ifaddr *)data;
int error = 0;
switch(cmd) {
case SIOCSIFADDR:
- /* XXX restrict to AF_INET */
+ if (ifa->ifa_addr->sa_family != AF_INET) {
+ error = EAFNOSUPPORT;
+ break;
+ }
+
ifp->if_flags |= IFF_UP;
/* FALLTHROUGH */
case SIOCSIFFLAGS: