netd: NetlinkManager: add support receiving quota2 log messages
NetlinkManager, NetlinkHandler
. added support for netlink's NETLINK_NFLOG family used by the updated xt_quota2.
. it pushes the event all the wait to NetworkManagementService.java
"linit alert <alert_name> <iface_name>"
This needs:
- new kernel with quota2 changes that support logging via NETLINK's
NETLINK_NFLOG family.
- BandwidthController changes that setup the alerts.
- system core NetlinkEvent that recognizes the NFLOG messages.
- java land NetworkManagementService changes.
Change-Id: Id5b1026c6002803b5a1c0c7623cf7b1961de9802
diff --git a/NetlinkHandler.cpp b/NetlinkHandler.cpp
index 874e03f..8331ae0 100644
--- a/NetlinkHandler.cpp
+++ b/NetlinkHandler.cpp
@@ -68,7 +68,12 @@
} else if (action == evt->NlActionLinkDown) {
notifyInterfaceLinkChanged(iface, false);
}
+ } else if (!strcmp(subsys, "qlog")) {
+ const char *alertName = evt->findParam("ALERT_NAME");
+ const char *iface = evt->findParam("INTERFACE");
+ notifyQuotaLimitReached(alertName, iface);
}
+
}
void NetlinkHandler::notifyInterfaceAdded(const char *name) {
@@ -104,3 +109,11 @@
mNm->getBroadcaster()->sendBroadcast(ResponseCode::InterfaceChange,
msg, false);
}
+
+void NetlinkHandler::notifyQuotaLimitReached(const char *name, const char *iface) {
+ char msg[255];
+ snprintf(msg, sizeof(msg), "limit alert %s %s", name, iface);
+
+ mNm->getBroadcaster()->sendBroadcast(ResponseCode::BandwidthControl,
+ msg, false);
+}