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 19extern "C" { 20#endif 21 22extern void rtnl_netem_set_limit(struct rtnl_qdisc *, int); 23extern int rtnl_netem_get_limit(struct rtnl_qdisc *); 24 25/* Packet Re-ordering */ 26extern void rtnl_netem_set_gap(struct rtnl_qdisc *, int); 27extern int rtnl_netem_get_gap(struct rtnl_qdisc *); 28 29extern void rtnl_netem_set_reorder_probability(struct rtnl_qdisc *, int); 30extern int rtnl_netem_get_reorder_probability(struct rtnl_qdisc *); 31 32extern void rtnl_netem_set_reorder_correlation(struct rtnl_qdisc *, int); 33extern int rtnl_netem_get_reorder_correlation(struct rtnl_qdisc *); 34 35/* Corruption */ 36extern void rtnl_netem_set_corruption_probability(struct rtnl_qdisc *, int); 37extern int rtnl_netem_get_corruption_probability(struct rtnl_qdisc *); 38 39extern void rtnl_netem_set_corruption_correlation(struct rtnl_qdisc *, int); 40extern int rtnl_netem_get_corruption_correlation(struct rtnl_qdisc *); 41 42/* Packet Loss */ 43extern void rtnl_netem_set_loss(struct rtnl_qdisc *, int); 44extern int rtnl_netem_get_loss(struct rtnl_qdisc *); 45 46extern void rtnl_netem_set_loss_correlation(struct rtnl_qdisc *, int); 47extern int rtnl_netem_get_loss_correlation(struct rtnl_qdisc *); 48 49/* Packet Duplication */ 50extern void rtnl_netem_set_duplicate(struct rtnl_qdisc *, int); 51extern int rtnl_netem_get_duplicate(struct rtnl_qdisc *); 52 53extern void rtnl_netem_set_duplicate_correlation(struct rtnl_qdisc *, int); 54extern int rtnl_netem_get_duplicate_correlation(struct rtnl_qdisc *); 55 56/* Packet Delay */ 57extern void rtnl_netem_set_delay(struct rtnl_qdisc *, int); 58extern int rtnl_netem_get_delay(struct rtnl_qdisc *); 59 60extern void rtnl_netem_set_jitter(struct rtnl_qdisc *, int); 61extern int rtnl_netem_get_jitter(struct rtnl_qdisc *); 62 63extern void rtnl_netem_set_delay_correlation(struct rtnl_qdisc *, int); 64extern int rtnl_netem_get_delay_correlation(struct rtnl_qdisc *); 65 66/* Delay Distribution */ 67#define MAXDIST 65536 68extern int rtnl_netem_set_delay_distribution(struct rtnl_qdisc *, const char *); 69extern int rtnl_netem_get_delay_distribution_size(struct rtnl_qdisc *); 70extern int rtnl_netem_get_delay_distribution(struct rtnl_qdisc *, int16_t **); 71 72#ifdef __cplusplus 73} 74#endif 75 76#endif 77