TCP_CONGCTL(9)         NetBSD Kernel Developer's Manual         TCP_CONGCTL(9)

NAME
     tcp_congctl -- TCP congestion control API

SYNOPSIS
     #include <netinet/tcp_congctl.h>

     int
     tcp_congctl_register(const char *, struct tcp_congctl *);

     int
     tcp_congctl_unregister(const char *);

DESCRIPTION
     The tcp_congctrl API is used to add or remove TCP congestion control
     algorithms on-the-fly and to modularize them.  It includes basically two
     functions:

     tcp_congctl_register(const char *, struct tcp_congctl *)
            Registers a new congestion control algorithm.  The struct
            tcp_congctl argument must contain a list of callbacks like the
            following:

                  struct tcp_congctl {
                          int  (*fast_retransmit)(struct tcpcb *,
                              struct tcphdr *);
                          void (*slow_retransmit)(struct tcpcb *);
                          void (*fast_retransmit_newack)(struct tcpcb *,
                              struct tcphdr *);
                          void (*newack)(struct tcpcb *,
                              struct tcphdr *);
                          void (*cong_exp)(struct tcpcb *);
                  };

     tcp_congctl_unregister(const char *)
            If found, unregister the selected TCP congestion control algo-
            rithm.

RETURN VALUES
     tcp_congctl_register() and tcp_congctl_unregister() both return 0 when
     there is no error.  If the name is already registered,
     tcp_congctl_register() will return EEXIST.  tcp_congctl_unregister() can
     return ENOENT if there is no congestion control algorithm by that name
     and can return EBUSY if the matched algorithm is being used by userspace
     applications.

FILES
     Implementation is in sys/netinet/tcp_congctl.c and the interface is in
     sys/netinet/tcp_congctl.h.

SEE ALSO
     tcp(4)

NetBSD 5.0_STABLE              October 15, 2006              NetBSD 5.0_STABLE
