TCP_CONGCTL(9) BSD 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)BSD October 15, 2006 BSD
Check Out this Related Man Page
BINTIME_ADD(9) BSD Kernel Developer's Manual BINTIME_ADD(9)NAME
bintime_add -- operations on ``bintime''
SYNOPSIS
#include <sys/time.h>
vid
bintime_add(struct bintime *bt, const struct bintime *bt2);
void
bintime_addx(struct bintime *bt, uint64_t x);
void
bintime_sub(struct bintime *bt, const struct bintime *bt2);
void
bintime2timespec(const struct bintime *bt, struct timespec *ts);
void
timespec2bintime(const struct timespec *ts, struct bintime *bt);
void
bintime2timeval(const struct bintime *bt, struct timeval *tv);
void
timeval2bintime(const struct timeval *tv, struct bintime *bt);
DESCRIPTION
These functions are provided for convenience as part of the machine-independent timecounter(9) framework. All of them operate with the
bintime structure.
The function bintime_add() adds the time information stored in bt2 to bt. Conversely, bintime_sub() subtracts bt2 from bt. The
bintime_addx() function stores the fraction of a second x to bt.
Like the function names bespeak, bintime2timespec() converts the bintime structure to struct timespec and timespec2bintime() does the oppo-
site. The functions bintime2timeval() and timeval2bintime() operate with struct timeval instead. The result is stored to the right-hand
side.
SEE ALSO timeradd(3), timeval(3), bintime(9), timecounter(9)BSD June 8, 2010 BSD
Hi,
I'm trying to create a RAW TCP SYN packet and send it from one Linux machine to another. I know the packet I have created is well formed and is received by the peer.
Now what I want is to get an ACK for my SYN. I want the peer's Network protocol stack to send me an ACK for that. I know... (17 Replies)
hi,
i hav array of following struct which contains 50 elements. I want to
print only first feild of the struct ie name field in GDB debuggure.
struct node {
char name ;
int age;
char sex;
int location
} SS
... (4 Replies)
I am having a doubt with type casting in C. Very often in network programming, we have something like this:
char *data = ...;
struct iphdr *ip = (struct iphdr *) data;
where iphdr is define in netinet/ip.h.
Let us say that the size of the content of held by 'data' is much more than... (1 Reply)
I have a Cisco small business switch and I am wondering what I will gain (or lose) by enabling "TCP congestion avoidance". I read the definition of it but how does one know when one should use it? (0 Replies)
I have noticed that the initial congestion window in my traces is 8920bytes~=6*1448. rfc3390 states the initial cwand should be max 4000 bytes(around 3*1448).
At first i thought it might be because i'm running my server on mac os x, so apple might have modified the tcp stack. Therefore I tried... (2 Replies)