1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1-only */ 2*4dc78e53SAndroid Build Coastguard Worker /* 3*4dc78e53SAndroid Build Coastguard Worker * Copyright (c) 2003-2006 Thomas Graf <[email protected]> 4*4dc78e53SAndroid Build Coastguard Worker */ 5*4dc78e53SAndroid Build Coastguard Worker 6*4dc78e53SAndroid Build Coastguard Worker #ifndef NETLINK_NETEM_H_ 7*4dc78e53SAndroid Build Coastguard Worker #define NETLINK_NETEM_H_ 8*4dc78e53SAndroid Build Coastguard Worker 9*4dc78e53SAndroid Build Coastguard Worker #include <netlink/netlink.h> 10*4dc78e53SAndroid Build Coastguard Worker #include <netlink/route/qdisc.h> 11*4dc78e53SAndroid Build Coastguard Worker 12*4dc78e53SAndroid Build Coastguard Worker #ifdef __cplusplus 13*4dc78e53SAndroid Build Coastguard Worker extern "C" { 14*4dc78e53SAndroid Build Coastguard Worker #endif 15*4dc78e53SAndroid Build Coastguard Worker 16*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_netem_set_limit(struct rtnl_qdisc *, int); 17*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_limit(struct rtnl_qdisc *); 18*4dc78e53SAndroid Build Coastguard Worker 19*4dc78e53SAndroid Build Coastguard Worker /* Packet Re-ordering */ 20*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_netem_set_gap(struct rtnl_qdisc *, int); 21*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_gap(struct rtnl_qdisc *); 22*4dc78e53SAndroid Build Coastguard Worker 23*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_netem_set_reorder_probability(struct rtnl_qdisc *, int); 24*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_reorder_probability(struct rtnl_qdisc *); 25*4dc78e53SAndroid Build Coastguard Worker 26*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_netem_set_reorder_correlation(struct rtnl_qdisc *, int); 27*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_reorder_correlation(struct rtnl_qdisc *); 28*4dc78e53SAndroid Build Coastguard Worker 29*4dc78e53SAndroid Build Coastguard Worker /* Corruption */ 30*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_netem_set_corruption_probability(struct rtnl_qdisc *, int); 31*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_corruption_probability(struct rtnl_qdisc *); 32*4dc78e53SAndroid Build Coastguard Worker 33*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_netem_set_corruption_correlation(struct rtnl_qdisc *, int); 34*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_corruption_correlation(struct rtnl_qdisc *); 35*4dc78e53SAndroid Build Coastguard Worker 36*4dc78e53SAndroid Build Coastguard Worker /* Packet Loss */ 37*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_netem_set_loss(struct rtnl_qdisc *, int); 38*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_loss(struct rtnl_qdisc *); 39*4dc78e53SAndroid Build Coastguard Worker 40*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_netem_set_loss_correlation(struct rtnl_qdisc *, int); 41*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_loss_correlation(struct rtnl_qdisc *); 42*4dc78e53SAndroid Build Coastguard Worker 43*4dc78e53SAndroid Build Coastguard Worker /* Packet Duplication */ 44*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_netem_set_duplicate(struct rtnl_qdisc *, int); 45*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_duplicate(struct rtnl_qdisc *); 46*4dc78e53SAndroid Build Coastguard Worker 47*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_netem_set_duplicate_correlation(struct rtnl_qdisc *, int); 48*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_duplicate_correlation(struct rtnl_qdisc *); 49*4dc78e53SAndroid Build Coastguard Worker 50*4dc78e53SAndroid Build Coastguard Worker /* Packet Delay */ 51*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_netem_set_delay(struct rtnl_qdisc *, int); 52*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_delay(struct rtnl_qdisc *); 53*4dc78e53SAndroid Build Coastguard Worker 54*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_netem_set_jitter(struct rtnl_qdisc *, int); 55*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_jitter(struct rtnl_qdisc *); 56*4dc78e53SAndroid Build Coastguard Worker 57*4dc78e53SAndroid Build Coastguard Worker extern void rtnl_netem_set_delay_correlation(struct rtnl_qdisc *, int); 58*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_delay_correlation(struct rtnl_qdisc *); 59*4dc78e53SAndroid Build Coastguard Worker 60*4dc78e53SAndroid Build Coastguard Worker /* Delay Distribution */ 61*4dc78e53SAndroid Build Coastguard Worker #define MAXDIST 65536 62*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_set_delay_distribution(struct rtnl_qdisc *, const char *); 63*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_set_delay_distribution_data(struct rtnl_qdisc *, const int16_t *, size_t len); 64*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_delay_distribution_size(struct rtnl_qdisc *); 65*4dc78e53SAndroid Build Coastguard Worker extern int rtnl_netem_get_delay_distribution(struct rtnl_qdisc *, int16_t **); 66*4dc78e53SAndroid Build Coastguard Worker 67*4dc78e53SAndroid Build Coastguard Worker #ifdef __cplusplus 68*4dc78e53SAndroid Build Coastguard Worker } 69*4dc78e53SAndroid Build Coastguard Worker #endif 70*4dc78e53SAndroid Build Coastguard Worker 71*4dc78e53SAndroid Build Coastguard Worker #endif 72