On Tue, Sep 23, 2003 at 02:40:39AM -0600, jared r r spiegel wrote:

>   tack a unique label on each one.

One could use (non-unique) labels like "matched_20030923", where the
prefix is used to find all rules that should be handled automatically,
and the second part is the date when the rule was matched the last time.

When you insert a rule, use the current date in the label.

Then, once a day, run a script that does the following

  Traverse all rules (pfctl -vsr), generating a new ruleset
  into a temporary file (pfctl -sr output is valid pfctl -f input)
    If the rule has a label that starts with "matched_"
      If the packet counter is > 0
        Replace label with 'matched_$(date "+%C%y%m%d")'
      Else
        If date in label is smaller than current date - 30 days
          Don't copy rule
        Else
          Copy rule verbatim
    Else
      Copy rule verbatim
  Reload ruleset from temporary file, resets all counters to 0

You could probably do all of this in a single line, piping pfctl -vsr
into awk(1), piping output back into pfctl -f - ;)

Daniel

Reply via email to