diff --git a/drivers/isimodem/isimodem.c b/drivers/isimodem/isimodem.c index dd0bb7fb..8c6b40d4 100644 --- a/drivers/isimodem/isimodem.c +++ b/drivers/isimodem/isimodem.c @@ -408,12 +408,12 @@ static struct ofono_modem_attribute_ops ops = { .query_serial = isi_query_serial }; -static void netlink_status_cb(bool up, uint8_t addr, unsigned idx, +static void netlink_status_cb(bool up, uint8_t addr, GIsiModem *idx, void *data) { struct isi_data *isi = data; - DBG("PhoNet is %s, addr=0x%02x, idx=%d", + DBG("PhoNet is %s, addr=0x%02x, idx=%p", up ? "up" : "down", addr, idx); if (up) { diff --git a/gisi/netlink.c b/gisi/netlink.c index c667fa6f..8fe2de75 100644 --- a/gisi/netlink.c +++ b/gisi/netlink.c @@ -48,6 +48,11 @@ struct _GPhonetNetlink { guint watch; }; +static inline GIsiModem *make_modem(unsigned idx) +{ + return (void *)(uintptr_t)idx; +} + /* Parser Netlink messages */ static gboolean g_pn_nl_process(GIOChannel *channel, GIOCondition cond, gpointer data) @@ -108,7 +113,8 @@ static gboolean g_pn_nl_process(GIOChannel *channel, GIOCondition cond, rta = RTA_NEXT(rta, len)) if (rta->rta_type == IFA_LOCAL) memcpy(&addr, RTA_DATA(rta), 1); - self->callback(up, addr, ifa->ifa_index, self->opaque); + self->callback(up, addr, + make_modem(ifa->ifa_index), self->opaque); } return TRUE; } diff --git a/gisi/netlink.h b/gisi/netlink.h index 8ea0607a..9e555a93 100644 --- a/gisi/netlink.h +++ b/gisi/netlink.h @@ -23,6 +23,7 @@ #include #include +#include #ifndef __GPHONET_NETLINK_H #define __GPHONET_NETLINK_H @@ -34,7 +35,7 @@ extern "C" { struct _GPhonetNetlink; typedef struct _GPhonetNetlink GPhonetNetlink; -typedef void (*GPhonetNetlinkFunc)(bool up, uint8_t addr, unsigned idx, +typedef void (*GPhonetNetlinkFunc)(bool up, uint8_t addr, GIsiModem *idx, void *data); GPhonetNetlink *g_pn_netlink_start(GPhonetNetlinkFunc func, void *data);