TCP_CONGCTL(9)

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 algorithm.

# 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)

October 15, 2006 | NetBSD 5.99