• JP Abgrall's avatar
    netd: bandwidthcontroler: add support for alerts via iptables' quota2 log messages · 8a932722
    JP Abgrall authored
    * Fix quota2 updating. The old insert-new/delete-old scheme doesn't work as the kernel
     keeps the old counter assigned to the new rule.
    
    * Add support for setting dummy quotas used only for alerts.
    
    This needs:
     - new kernel with quota2 changes that support logging via NETLINK's
       NETLINK_NFLOG family.
     - NetlinkManager support for receiving the events.
     - java land handler for these new events.
    
    * new commands
      - add/remove a dummy quota to generate an alert after <bytes> are seen including loopback.
        alerts are only triggered once.
        . ndc bandwidth setglobalalert <bytes>
           calling it multiple times, just re-arms the alert for the specified number of bytes.
            Use "ndc bandwidth getiquota singleAlert" to get what is left.
        . ndc bandwidth removeglobalalert
      - add/remove alert on a shared quota (similar accounting as shared quota)
        . ndc bandwidth setsharedalert <bytes>
            Requires that a shared quota already exist.
        . ndc bandwidth removesharedalert
            Removing the last of the shared quotas will remove the matching alert.
      - add/remove alert on an interface (similar accounting as interface quota)
        . ndc bandwidth setinterfacealert <iface> <bytes>
            Requires that a interface quota already exist.
        . ndc bandwidth removeinterfacealert <iface>
            Removing the interface quota will remove the matching alert.
      - get the quotas and alert leftovers
       . ndc bandwidth getquota
          shared quota leftover
       . ndc bandwidth getiquota <quota_name_or_iface>
          iface specific quota leftover
          Can be used to read-out alerts. E.g.
            setglobalalert 12345 -> getiquota globalAlert
            setsharedalert 12345 -> getiquota sharedAlert
            setinterfacealert iface0 12345 -> getiquota iface0Alert
    
    Change-Id: Iea9698b9d20e713281755dac32b4772a6cf0e84e
    8a932722
CommandListener.cpp 35.5 KB