Skip to content
  • Patrick Kelsey's avatar
    Extended pf(4) ioctl interface and pfctl(8) to allow bandwidths of · 249cc75f
    Patrick Kelsey authored
    2^32 bps or greater to be used.  Prior to this, bandwidth parameters
    would simply wrap at the 2^32 boundary.  The computations in the HFSC
    scheduler and token bucket regulator have been modified to operate
    correctly up to at least 100 Gbps.  No other algorithms have been
    examined or modified for correct operation above 2^32 bps (some may
    have existing computation resolution or overflow issues at rates below
    that threshold).  pfctl(8) will now limit non-HFSC bandwidth
    parameters to 2^32 - 1 before passing them to the kernel.
    
    The extensions to the pf(4) ioctl interface have been made in a
    backwards-compatible way by versioning affected data structures,
    supporting all versions in the kernel, and implementing macros that
    will cause existing code that consumes that interface to use version 0
    without source modifications.  If version 0 consumers of the interface
    are used against a new kernel that has had bandwidth parameters of
    2^32 or greater configured by updated tools, such bandwidth parameters
    will be reported as 2^32 - 1 bps by those old consumers.
    
    All in-tree consumers of the pf(4) interface have been updated.  To
    update out-of-tree consumers to the latest version of the interface,
    define PFIOC_USE_LATEST ahead of any includes and use the code of
    pfctl(8) as a guide for the ioctls of interest.
    
    PR:	211730
    Reviewed by:	jmallett, kp, loos
    MFC after:	2 weeks
    Relnotes:	yes
    Sponsored by:	RG Nets
    Differential Revision:	https://reviews.freebsd.org/D16782
    249cc75f