diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2007-12-30 04:12:04 +0100 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2007-12-30 04:12:04 +0100 |
commit | aa844c538bf698eba5799526ca1d246fec9503eb (patch) | |
tree | fa223212390bac68d06a8dfcf62921daa0ee7a1a /src/rtnl.c | |
parent | 0c2d46245dd190dc80872bd1627bfd908dfa8c14 (diff) | |
download | connman-aa844c538bf698eba5799526ca1d246fec9503eb.tar.gz connman-aa844c538bf698eba5799526ca1d246fec9503eb.tar.bz2 connman-aa844c538bf698eba5799526ca1d246fec9503eb.zip |
Add carrier detection callbacks and driver data functions
Diffstat (limited to 'src/rtnl.c')
-rw-r--r-- | src/rtnl.c | 19 |
1 files changed, 14 insertions, 5 deletions
@@ -43,6 +43,12 @@ static inline void print_char(struct rtattr *attr, const char *name) (char *) RTA_DATA(attr)); } +static inline void print_byte(struct rtattr *attr, const char *name) +{ + printf(" attr %s (len %d) 0x%02x\n", name, RTA_PAYLOAD(attr), + *((unsigned char *) RTA_DATA(attr))); +} + static inline void print_attr(struct rtattr *attr, const char *name) { if (name) @@ -71,9 +77,12 @@ static void rtnl_link(struct nlmsghdr *hdr) if ((iface->flags & CONNMAN_IFACE_FLAG_RTNL) == 0) return; - if (iface->carrier != (msg->ifi_flags & IFF_RUNNING)) { - iface->carrier = (msg->ifi_flags & IFF_RUNNING); - DBG("carrier %s", iface->carrier ? "on" : "off"); + if (iface->carrier != ((msg->ifi_flags & IFF_RUNNING) != 0)) { + iface->carrier = ((msg->ifi_flags & IFF_RUNNING) != 0); + if (iface->driver->rtnl_carrier) + iface->driver->rtnl_carrier(iface, iface->carrier); + else + connman_iface_indicate_carrier(iface, iface->carrier); } for (attr = IFLA_RTA(msg); RTA_OK(attr, bytes); @@ -127,10 +136,10 @@ static void rtnl_link(struct nlmsghdr *hdr) print_attr(attr, "weight"); break; case IFLA_OPERSTATE: - print_attr(attr, "operstate"); + print_byte(attr, "operstate"); break; case IFLA_LINKMODE: - print_attr(attr, "linkmode"); + print_byte(attr, "linkmode"); break; default: print_attr(attr, NULL); |