summaryrefslogtreecommitdiffstats
path: root/gisi
diff options
context:
space:
mode:
Diffstat (limited to 'gisi')
-rw-r--r--gisi/netlink.c8
-rw-r--r--gisi/netlink.h3
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);