Hi Darren,

Ok, I just sat down and tried to map out an ippool strategy to my
problem and have come up with a few follow on questions...

1) It seems from the man page example that grpmap may act
like either a second "head" statement or a substitute for a
head statement. Without more than a "fragment" of a complete
ipf.conf and ippool.conf, it's hard to tell...

from the man page...

ipf.conf:    call now fr_srcgrpmap/1010 in all
             pass in all group 1020
             block in all group 1030

ippool.conf: group-map in role = ipf number = 1010
              { 1.1.1.1/32, group = 1020; 3.3.0.0/16, group = 1030; };

Does there also need to be statements - head 1020 and
head 1030 in the above ipf.conf? Or must there not be?

2) This starts to make ipf look programmable.
Is there a kernel function similar to fr_srcgrpmap
that instead maps to a pool?

For example I'd like to do something like:
ipf.conf: #figure out which pool the incoming packet belongs in
          call now fr_poolmap/100 in all
          # "result" is returned from fr_poolmap
          # if the packet address is covered by the pool, block it
          block in fast from pool/result to any

ippool.conf: group-map in role = ipf number = 100
             {0.0.0.0/8, pool = 1000;
              1.0.0.0/8, pool = 1001;
                     :
                     :
              255.0.0.0/8, pool = 1255;};

              table role = ipf type = tree number = 1000
              {};
              table role = ipf type = tree number = 1001
              {1.168.1.0/24;};
               :
               :
              table role = ipf type = tree number = 1255
              { 255.129.205.167/32; 255.129.211.125/32;
                255.129.225.165/32; 255.129.248.128/26; };

3) Is my syntax for empty pools and multi-line input correct above?

4) I would take it that ippool records have considerably less
kernel memory overhead than filter rules?

What I'm kinda looking for is a universal and efficient way
to filter out random addresses/subnets from the entire ipv4 space.
I can perform pre-sorting to prevent the entire list from being
traversed for each input.

Thanks,
gene


Reply via email to