netem.h

00001 /*
00002  * netlink/route/sch/netem.h            Network Emulator Qdisc
00003  *
00004  *      This library is free software; you can redistribute it and/or
00005  *      modify it under the terms of the GNU Lesser General Public
00006  *      License as published by the Free Software Foundation version 2.1
00007  *      of the License.
00008  *
00009  * Copyright (c) 2003-2006 Thomas Graf <tgraf@suug.ch>
00010  */
00011 
00012 #ifndef NETLINK_NETEM_H_
00013 #define NETLINK_NETEM_H_
00014 
00015 #include <netlink/netlink.h>
00016 
00017 #ifdef __cplusplus
00018 extern "C" {
00019 #endif
00020 
00021 extern void rtnl_netem_set_limit(struct rtnl_qdisc *, int);
00022 extern int rtnl_netem_get_limit(struct rtnl_qdisc *);
00023 
00024 /* Packet Re-ordering */
00025 extern void rtnl_netem_set_gap(struct rtnl_qdisc *, int);
00026 extern int rtnl_netem_get_gap(struct rtnl_qdisc *);
00027 
00028 extern void rtnl_netem_set_reorder_probability(struct rtnl_qdisc *, int);
00029 extern int rtnl_netem_get_reorder_probability(struct rtnl_qdisc *);
00030 
00031 extern void rtnl_netem_set_reorder_correlation(struct rtnl_qdisc *, int);
00032 extern int rtnl_netem_get_reorder_correlation(struct rtnl_qdisc *);
00033 
00034 /* Corruption */
00035 extern void rtnl_netem_set_corruption_probability(struct rtnl_qdisc *, int);
00036 extern int rtnl_netem_get_corruption_probability(struct rtnl_qdisc *);
00037 
00038 extern void rtnl_netem_set_corruption_correlation(struct rtnl_qdisc *, int);
00039 extern int rtnl_netem_get_corruption_correlation(struct rtnl_qdisc *);
00040 
00041 /* Packet Loss */
00042 extern void rtnl_netem_set_loss(struct rtnl_qdisc *, int);
00043 extern int rtnl_netem_get_loss(struct rtnl_qdisc *);
00044 
00045 extern void rtnl_netem_set_loss_correlation(struct rtnl_qdisc *, int);
00046 extern int rtnl_netem_get_loss_correlation(struct rtnl_qdisc *);
00047 
00048 /* Packet Duplication */
00049 extern void rtnl_netem_set_duplicate(struct rtnl_qdisc *, int);
00050 extern int rtnl_netem_get_duplicate(struct rtnl_qdisc *);
00051 
00052 extern void rtnl_netem_set_duplicate_correlation(struct rtnl_qdisc *, int);
00053 extern int rtnl_netem_get_duplicate_correlation(struct rtnl_qdisc *);
00054 
00055 /* Packet Delay */
00056 extern void rtnl_netem_set_delay(struct rtnl_qdisc *, int);
00057 extern int rtnl_netem_get_delay(struct rtnl_qdisc *);
00058 
00059 extern void rtnl_netem_set_jitter(struct rtnl_qdisc *, int);
00060 extern int rtnl_netem_get_jitter(struct rtnl_qdisc *);
00061 
00062 extern void rtnl_netem_set_delay_correlation(struct rtnl_qdisc *, int);
00063 extern int rtnl_netem_get_delay_correlation(struct rtnl_qdisc *);
00064 
00065 /* Delay Distribution */
00066 #define MAXDIST 65536
00067 extern int rtnl_netem_set_delay_distribution(struct rtnl_qdisc *, const char *);
00068 extern int rtnl_netem_get_delay_distribution_size(struct rtnl_qdisc *);
00069 extern int rtnl_netem_get_delay_distribution(struct rtnl_qdisc *, int16_t **);
00070 
00071 #ifdef __cplusplus
00072 }
00073 #endif
00074 
00075 #endif