diff options
Diffstat (limited to 'gisi')
-rw-r--r-- | gisi/netlink.c | 8 | ||||
-rw-r--r-- | gisi/netlink.h | 3 |
2 files changed, 9 insertions, 2 deletions
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 <stdbool.h> #include <stdint.h> +#include <gisi/modem.h> #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); |