1 /* 2 * netlink/route/sch/netem.h Network Emulator Qdisc 3 * 4 * This library is free software; you can redistribute it and/or 5 * modify it under the terms of the GNU Lesser General Public 6 * License as published by the Free Software Foundation version 2.1 7 * of the License. 8 * 9 * Copyright (c) 2003-2006 Thomas Graf <tgraf@suug.ch> 10 */ 11 12 #ifndef NETLINK_NETEM_H_ 13 #define NETLINK_NETEM_H_ 14 15 #include <netlink/netlink.h> 16 #include <netlink/route/qdisc.h> 17 18 #ifdef __cplusplus 19 extern "C" { 20 #endif 21 22 extern void rtnl_netem_set_limit(struct rtnl_qdisc *, int); 23 extern int rtnl_netem_get_limit(struct rtnl_qdisc *); 24 25 /* Packet Re-ordering */ 26 extern void rtnl_netem_set_gap(struct rtnl_qdisc *, int); 27 extern int rtnl_netem_get_gap(struct rtnl_qdisc *); 28 29 extern void rtnl_netem_set_reorder_probability(struct rtnl_qdisc *, int); 30 extern int rtnl_netem_get_reorder_probability(struct rtnl_qdisc *); 31 32 extern void rtnl_netem_set_reorder_correlation(struct rtnl_qdisc *, int); 33 extern int rtnl_netem_get_reorder_correlation(struct rtnl_qdisc *); 34 35 /* Corruption */ 36 extern void rtnl_netem_set_corruption_probability(struct rtnl_qdisc *, int); 37 extern int rtnl_netem_get_corruption_probability(struct rtnl_qdisc *); 38 39 extern void rtnl_netem_set_corruption_correlation(struct rtnl_qdisc *, int); 40 extern int rtnl_netem_get_corruption_correlation(struct rtnl_qdisc *); 41 42 /* Packet Loss */ 43 extern void rtnl_netem_set_loss(struct rtnl_qdisc *, int); 44 extern int rtnl_netem_get_loss(struct rtnl_qdisc *); 45 46 extern void rtnl_netem_set_loss_correlation(struct rtnl_qdisc *, int); 47 extern int rtnl_netem_get_loss_correlation(struct rtnl_qdisc *); 48 49 /* Packet Duplication */ 50 extern void rtnl_netem_set_duplicate(struct rtnl_qdisc *, int); 51 extern int rtnl_netem_get_duplicate(struct rtnl_qdisc *); 52 53 extern void rtnl_netem_set_duplicate_correlation(struct rtnl_qdisc *, int); 54 extern int rtnl_netem_get_duplicate_correlation(struct rtnl_qdisc *); 55 56 /* Packet Delay */ 57 extern void rtnl_netem_set_delay(struct rtnl_qdisc *, int); 58 extern int rtnl_netem_get_delay(struct rtnl_qdisc *); 59 60 extern void rtnl_netem_set_jitter(struct rtnl_qdisc *, int); 61 extern int rtnl_netem_get_jitter(struct rtnl_qdisc *); 62 63 extern void rtnl_netem_set_delay_correlation(struct rtnl_qdisc *, int); 64 extern int rtnl_netem_get_delay_correlation(struct rtnl_qdisc *); 65 66 /* Delay Distribution */ 67 #define MAXDIST 65536 68 extern int rtnl_netem_set_delay_distribution(struct rtnl_qdisc *, const char *); 69 extern int rtnl_netem_set_delay_distribution_data(struct rtnl_qdisc *, const int16_t *, size_t len); 70 extern int rtnl_netem_get_delay_distribution_size(struct rtnl_qdisc *); 71 extern int rtnl_netem_get_delay_distribution(struct rtnl_qdisc *, int16_t **); 72 73 #ifdef __cplusplus 74 } 75 #endif 76 77 #endif 78