libnl 1.1
Network Emulator
Queueing Discipline Modules

For further documentation see http://linux-net.osdl.org/index.php/Netem.

Queue Limit

int rtnl_netem_set_limit (struct rtnl_qdisc *qdisc, int limit)
 Set limit of netem qdisc.
int rtnl_netem_get_limit (struct rtnl_qdisc *qdisc)
 Get limit of netem qdisc.

Packet Re-ordering

int rtnl_netem_set_gap (struct rtnl_qdisc *qdisc, int gap)
 Set re-ordering gap of netem qdisc.
int rtnl_netem_get_gap (struct rtnl_qdisc *qdisc)
 Get re-ordering gap of netem qdisc.
int rtnl_netem_set_reorder_probability (struct rtnl_qdisc *qdisc, int prob)
 Set re-ordering probability of netem qdisc.
int rtnl_netem_get_reorder_probability (struct rtnl_qdisc *qdisc)
 Get re-ordering probability of netem qdisc.
int rtnl_netem_set_reorder_correlation (struct rtnl_qdisc *qdisc, int prob)
 Set re-order correlation probability of netem qdisc.
int rtnl_netem_get_reorder_correlation (struct rtnl_qdisc *qdisc)
 Get re-ordering correlation probability of netem qdisc.

Packet Loss

int rtnl_netem_set_loss (struct rtnl_qdisc *qdisc, int prob)
 Set packet loss probability of netem qdisc.
int rtnl_netem_get_loss (struct rtnl_qdisc *qdisc)
 Get packet loss probability of netem qdisc.
int rtnl_netem_set_loss_correlation (struct rtnl_qdisc *qdisc, int prob)
 Set packet loss correlation probability of netem qdisc.
int rtnl_netem_get_loss_correlation (struct rtnl_qdisc *qdisc)
 Get packet loss correlation probability of netem qdisc.

Packet Duplication

int rtnl_netem_set_duplicate (struct rtnl_qdisc *qdisc, int prob)
 Set packet duplication probability of netem qdisc.
int rtnl_netem_get_duplicate (struct rtnl_qdisc *qdisc)
 Get packet duplication probability of netem qdisc.
int rtnl_netem_set_duplicate_correlation (struct rtnl_qdisc *qdisc, int prob)
 Set packet duplication correlation probability of netem qdisc.
int rtnl_netem_get_duplicate_correlation (struct rtnl_qdisc *qdisc)
 Get packet duplication correlation probability of netem qdisc.

Packet Delay

int rtnl_netem_set_delay (struct rtnl_qdisc *qdisc, int delay)
 Set packet delay of netem qdisc.
int rtnl_netem_get_delay (struct rtnl_qdisc *qdisc)
 Get packet delay of netem qdisc.
int rtnl_netem_set_jitter (struct rtnl_qdisc *qdisc, int jitter)
 Set packet delay jitter of netem qdisc.
int rtnl_netem_get_jitter (struct rtnl_qdisc *qdisc)
 Get packet delay jitter of netem qdisc.
int rtnl_netem_set_delay_correlation (struct rtnl_qdisc *qdisc, int prob)
 Set packet delay correlation probability of netem qdisc.
int rtnl_netem_get_delay_correlation (struct rtnl_qdisc *qdisc)
 Get packet delay correlation probability of netem qdisc.

Function Documentation

int rtnl_netem_set_limit ( struct rtnl_qdisc *  qdisc,
int  limit 
)
Parameters:
qdiscNetem qdisc to be modified.
limitNew limit in bytes.
Returns:
0 on success or a negative error code.

Definition at line 165 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_alloc(qdisc);
        if (!netem)
                return nl_errno(ENOMEM);
        
        netem->qnm_limit = limit;
        netem->qnm_mask |= SCH_NETEM_ATTR_LIMIT;

        return 0;
}
int rtnl_netem_get_limit ( struct rtnl_qdisc *  qdisc)
Parameters:
qdiscNetem qdisc.
Returns:
Limit in bytes or a negative error code.

Definition at line 184 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_qdisc(qdisc);
        if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_LIMIT))
                return netem->qnm_limit;
        else
                return nl_errno(ENOENT);
}
int rtnl_netem_set_gap ( struct rtnl_qdisc *  qdisc,
int  gap 
)
Parameters:
qdiscNetem qdisc to be modified.
gapNew gap in number of packets.
Returns:
0 on success or a negative error code.

Definition at line 208 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_alloc(qdisc);
        if (!netem)
                return nl_errno(ENOMEM);

        netem->qnm_gap = gap;
        netem->qnm_mask |= SCH_NETEM_ATTR_GAP;

        return 0;
}
int rtnl_netem_get_gap ( struct rtnl_qdisc *  qdisc)
Parameters:
qdiscNetem qdisc.
Returns:
Re-ordering gap in packets or a negative error code.

Definition at line 227 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_qdisc(qdisc);
        if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_GAP))
                return netem->qnm_gap;
        else
                return nl_errno(ENOENT);
}
int rtnl_netem_set_reorder_probability ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdiscNetem qdisc to be modified.
probNew re-ordering probability.
Returns:
0 on success or a negative error code.

Definition at line 244 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_alloc(qdisc);
        if (!netem)
                return nl_errno(ENOMEM);

        netem->qnm_ro.nmro_probability = prob;
        netem->qnm_mask |= SCH_NETEM_ATTR_RO_PROB;

        return 0;
}
int rtnl_netem_get_reorder_probability ( struct rtnl_qdisc *  qdisc)
Parameters:
qdiscNetem qdisc.
Returns:
Re-ordering probability or a negative error code.

Definition at line 263 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_qdisc(qdisc);
        if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_RO_PROB))
                return netem->qnm_ro.nmro_probability;
        else
                return nl_errno(ENOENT);
}
int rtnl_netem_set_reorder_correlation ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdiscNetem qdisc to be modified.
probNew re-ordering correlation probability.
Returns:
0 on success or a negative error code.

Definition at line 280 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_alloc(qdisc);
        if (!netem)
                return nl_errno(ENOMEM);

        netem->qnm_ro.nmro_correlation = prob;
        netem->qnm_mask |= SCH_NETEM_ATTR_RO_CORR;

        return 0;
}
int rtnl_netem_get_reorder_correlation ( struct rtnl_qdisc *  qdisc)
Parameters:
qdiscNetem qdisc.
Returns:
Re-ordering correlation probability or a negative error code.

Definition at line 299 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_qdisc(qdisc);
        if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_RO_CORR))
                return netem->qnm_ro.nmro_correlation;
        else
                return nl_errno(ENOENT);
}
int rtnl_netem_set_loss ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdiscNetem qdisc to be modified.
probNew packet loss probability.
Returns:
0 on success or a negative error code.

Definition at line 323 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_alloc(qdisc);
        if (!netem)
                return nl_errno(ENOMEM);

        netem->qnm_loss = prob;
        netem->qnm_mask |= SCH_NETEM_ATTR_LOSS;

        return 0;
}
int rtnl_netem_get_loss ( struct rtnl_qdisc *  qdisc)
Parameters:
qdiscNetem qdisc.
Returns:
Packet loss probability or a negative error code.

Definition at line 342 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_qdisc(qdisc);
        if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_LOSS))
                return netem->qnm_loss;
        else
                return nl_errno(ENOENT);
}
int rtnl_netem_set_loss_correlation ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdiscNetem qdisc to be modified.
probNew packet loss correlation.
Returns:
0 on success or a negative error code.

Definition at line 359 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_alloc(qdisc);
        if (!netem)
                return nl_errno(ENOMEM);

        netem->qnm_corr.nmc_loss = prob;
        netem->qnm_mask |= SCH_NETEM_ATTR_LOSS_CORR;

        return 0;
}
int rtnl_netem_get_loss_correlation ( struct rtnl_qdisc *  qdisc)
Parameters:
qdiscNetem qdisc.
Returns:
Packet loss correlation probability or a negative error code.

Definition at line 378 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_qdisc(qdisc);
        if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_LOSS_CORR))
                return netem->qnm_corr.nmc_loss;
        else
                return nl_errno(ENOENT);
}
int rtnl_netem_set_duplicate ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdiscNetem qdisc to be modified.
probNew packet duplication probability.
Returns:
0 on success or a negative error code.

Definition at line 402 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_alloc(qdisc);
        if (!netem)
                return nl_errno(ENOMEM);

        netem->qnm_duplicate = prob;
        netem->qnm_mask |= SCH_NETEM_ATTR_DUPLICATE;

        return 0;
}
int rtnl_netem_get_duplicate ( struct rtnl_qdisc *  qdisc)
Parameters:
qdiscNetem qdisc.
Returns:
Packet duplication probability or a negative error code.

Definition at line 421 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_qdisc(qdisc);
        if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_DUPLICATE))
                return netem->qnm_duplicate;
        else
                return nl_errno(ENOENT);
}
int rtnl_netem_set_duplicate_correlation ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdiscNetem qdisc to be modified.
probNew packet duplication correlation probability.
Returns:
0 on sucess or a negative error code.

Definition at line 438 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_alloc(qdisc);
        if (!netem)
                return nl_errno(ENOMEM);

        netem->qnm_corr.nmc_duplicate = prob;
        netem->qnm_mask |= SCH_NETEM_ATTR_DUP_CORR;

        return 0;
}
int rtnl_netem_get_duplicate_correlation ( struct rtnl_qdisc *  qdisc)
Parameters:
qdiscNetem qdisc.
Returns:
Packet duplication correlation probability or a negative error code.

Definition at line 457 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_qdisc(qdisc);
        if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_DUP_CORR))
                return netem->qnm_corr.nmc_duplicate;
        else
                return nl_errno(ENOENT);
}
int rtnl_netem_set_delay ( struct rtnl_qdisc *  qdisc,
int  delay 
)
Parameters:
qdiscNetem qdisc to be modified.
delayNew packet delay in micro seconds.
Returns:
0 on success or a negative error code.

Definition at line 481 of file netem.c.

References nl_us2ticks().

{
        struct rtnl_netem *netem;

        netem = netem_alloc(qdisc);
        if (!netem)
                return nl_errno(ENOMEM);

        netem->qnm_latency = nl_us2ticks(delay);
        netem->qnm_mask |= SCH_NETEM_ATTR_LATENCY;

        return 0;
}
int rtnl_netem_get_delay ( struct rtnl_qdisc *  qdisc)
Parameters:
qdiscNetem qdisc.
Returns:
Packet delay in micro seconds or a negative error code.

Definition at line 500 of file netem.c.

References nl_ticks2us().

{
        struct rtnl_netem *netem;

        netem = netem_qdisc(qdisc);
        if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_LATENCY))
                return nl_ticks2us(netem->qnm_latency);
        else
                return nl_errno(ENOENT);
}
int rtnl_netem_set_jitter ( struct rtnl_qdisc *  qdisc,
int  jitter 
)
Parameters:
qdiscNetem qdisc to be modified.
jitterNew packet delay jitter in micro seconds.
Returns:
0 on success or a negative error code.

Definition at line 517 of file netem.c.

References nl_us2ticks().

{
        struct rtnl_netem *netem;

        netem = netem_alloc(qdisc);
        if (!netem)
                return nl_errno(ENOMEM);

        netem->qnm_jitter = nl_us2ticks(jitter);
        netem->qnm_mask |= SCH_NETEM_ATTR_JITTER;

        return 0;
}
int rtnl_netem_get_jitter ( struct rtnl_qdisc *  qdisc)
Parameters:
qdiscNetem qdisc.
Returns:
Packet delay jitter in micro seconds or a negative error code.

Definition at line 536 of file netem.c.

References nl_ticks2us().

{
        struct rtnl_netem *netem;

        netem = netem_qdisc(qdisc);
        if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_JITTER))
                return nl_ticks2us(netem->qnm_jitter);
        else
                return nl_errno(ENOENT);
}
int rtnl_netem_set_delay_correlation ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdiscNetem qdisc to be modified.
probNew packet delay correlation probability.

Definition at line 552 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_alloc(qdisc);
        if (!netem)
                return nl_errno(ENOMEM);

        netem->qnm_corr.nmc_delay = prob;
        netem->qnm_mask |= SCH_NETEM_ATTR_DELAY_CORR;

        return 0;
}
int rtnl_netem_get_delay_correlation ( struct rtnl_qdisc *  qdisc)
Parameters:
qdiscNetem qdisc.
Returns:
Packet delay correlation probability or a negative error code.

Definition at line 571 of file netem.c.

{
        struct rtnl_netem *netem;

        netem = netem_qdisc(qdisc);
        if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_DELAY_CORR))
                return netem->qnm_corr.nmc_delay;
        else
                return nl_errno(ENOENT);
}