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:
qdisc Netem qdisc to be modified.
limit New limit in bytes.
Returns:
0 on success or a negative error code.

Definition at line 165 of file netem.c.

00166 {
00167         struct rtnl_netem *netem;
00168 
00169         netem = netem_alloc(qdisc);
00170         if (!netem)
00171                 return nl_errno(ENOMEM);
00172         
00173         netem->qnm_limit = limit;
00174         netem->qnm_mask |= SCH_NETEM_ATTR_LIMIT;
00175 
00176         return 0;
00177 }

int rtnl_netem_get_limit ( struct rtnl_qdisc *  qdisc  ) 
Parameters:
qdisc Netem qdisc.
Returns:
Limit in bytes or a negative error code.

Definition at line 184 of file netem.c.

00185 {
00186         struct rtnl_netem *netem;
00187 
00188         netem = netem_qdisc(qdisc);
00189         if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_LIMIT))
00190                 return netem->qnm_limit;
00191         else
00192                 return nl_errno(ENOENT);
00193 }

int rtnl_netem_set_gap ( struct rtnl_qdisc *  qdisc,
int  gap 
)
Parameters:
qdisc Netem qdisc to be modified.
gap New gap in number of packets.
Returns:
0 on success or a negative error code.

Definition at line 208 of file netem.c.

00209 {
00210         struct rtnl_netem *netem;
00211 
00212         netem = netem_alloc(qdisc);
00213         if (!netem)
00214                 return nl_errno(ENOMEM);
00215 
00216         netem->qnm_gap = gap;
00217         netem->qnm_mask |= SCH_NETEM_ATTR_GAP;
00218 
00219         return 0;
00220 }

int rtnl_netem_get_gap ( struct rtnl_qdisc *  qdisc  ) 
Parameters:
qdisc Netem qdisc.
Returns:
Re-ordering gap in packets or a negative error code.

Definition at line 227 of file netem.c.

00228 {
00229         struct rtnl_netem *netem;
00230 
00231         netem = netem_qdisc(qdisc);
00232         if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_GAP))
00233                 return netem->qnm_gap;
00234         else
00235                 return nl_errno(ENOENT);
00236 }

int rtnl_netem_set_reorder_probability ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdisc Netem qdisc to be modified.
prob New re-ordering probability.
Returns:
0 on success or a negative error code.

Definition at line 244 of file netem.c.

00245 {
00246         struct rtnl_netem *netem;
00247 
00248         netem = netem_alloc(qdisc);
00249         if (!netem)
00250                 return nl_errno(ENOMEM);
00251 
00252         netem->qnm_ro.nmro_probability = prob;
00253         netem->qnm_mask |= SCH_NETEM_ATTR_RO_PROB;
00254 
00255         return 0;
00256 }

int rtnl_netem_get_reorder_probability ( struct rtnl_qdisc *  qdisc  ) 
Parameters:
qdisc Netem qdisc.
Returns:
Re-ordering probability or a negative error code.

Definition at line 263 of file netem.c.

00264 {
00265         struct rtnl_netem *netem;
00266 
00267         netem = netem_qdisc(qdisc);
00268         if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_RO_PROB))
00269                 return netem->qnm_ro.nmro_probability;
00270         else
00271                 return nl_errno(ENOENT);
00272 }

int rtnl_netem_set_reorder_correlation ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdisc Netem qdisc to be modified.
prob New re-ordering correlation probability.
Returns:
0 on success or a negative error code.

Definition at line 280 of file netem.c.

00281 {
00282         struct rtnl_netem *netem;
00283 
00284         netem = netem_alloc(qdisc);
00285         if (!netem)
00286                 return nl_errno(ENOMEM);
00287 
00288         netem->qnm_ro.nmro_correlation = prob;
00289         netem->qnm_mask |= SCH_NETEM_ATTR_RO_CORR;
00290 
00291         return 0;
00292 }

int rtnl_netem_get_reorder_correlation ( struct rtnl_qdisc *  qdisc  ) 
Parameters:
qdisc Netem qdisc.
Returns:
Re-ordering correlation probability or a negative error code.

Definition at line 299 of file netem.c.

00300 {
00301         struct rtnl_netem *netem;
00302 
00303         netem = netem_qdisc(qdisc);
00304         if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_RO_CORR))
00305                 return netem->qnm_ro.nmro_correlation;
00306         else
00307                 return nl_errno(ENOENT);
00308 }

int rtnl_netem_set_loss ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdisc Netem qdisc to be modified.
prob New packet loss probability.
Returns:
0 on success or a negative error code.

Definition at line 323 of file netem.c.

00324 {
00325         struct rtnl_netem *netem;
00326 
00327         netem = netem_alloc(qdisc);
00328         if (!netem)
00329                 return nl_errno(ENOMEM);
00330 
00331         netem->qnm_loss = prob;
00332         netem->qnm_mask |= SCH_NETEM_ATTR_LOSS;
00333 
00334         return 0;
00335 }

int rtnl_netem_get_loss ( struct rtnl_qdisc *  qdisc  ) 
Parameters:
qdisc Netem qdisc.
Returns:
Packet loss probability or a negative error code.

Definition at line 342 of file netem.c.

00343 {
00344         struct rtnl_netem *netem;
00345 
00346         netem = netem_qdisc(qdisc);
00347         if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_LOSS))
00348                 return netem->qnm_loss;
00349         else
00350                 return nl_errno(ENOENT);
00351 }

int rtnl_netem_set_loss_correlation ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdisc Netem qdisc to be modified.
prob New packet loss correlation.
Returns:
0 on success or a negative error code.

Definition at line 359 of file netem.c.

00360 {
00361         struct rtnl_netem *netem;
00362 
00363         netem = netem_alloc(qdisc);
00364         if (!netem)
00365                 return nl_errno(ENOMEM);
00366 
00367         netem->qnm_corr.nmc_loss = prob;
00368         netem->qnm_mask |= SCH_NETEM_ATTR_LOSS_CORR;
00369 
00370         return 0;
00371 }

int rtnl_netem_get_loss_correlation ( struct rtnl_qdisc *  qdisc  ) 
Parameters:
qdisc Netem qdisc.
Returns:
Packet loss correlation probability or a negative error code.

Definition at line 378 of file netem.c.

00379 {
00380         struct rtnl_netem *netem;
00381 
00382         netem = netem_qdisc(qdisc);
00383         if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_LOSS_CORR))
00384                 return netem->qnm_corr.nmc_loss;
00385         else
00386                 return nl_errno(ENOENT);
00387 }

int rtnl_netem_set_duplicate ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdisc Netem qdisc to be modified.
prob New packet duplication probability.
Returns:
0 on success or a negative error code.

Definition at line 402 of file netem.c.

00403 {
00404         struct rtnl_netem *netem;
00405 
00406         netem = netem_alloc(qdisc);
00407         if (!netem)
00408                 return nl_errno(ENOMEM);
00409 
00410         netem->qnm_duplicate = prob;
00411         netem->qnm_mask |= SCH_NETEM_ATTR_DUPLICATE;
00412 
00413         return 0;
00414 }

int rtnl_netem_get_duplicate ( struct rtnl_qdisc *  qdisc  ) 
Parameters:
qdisc Netem qdisc.
Returns:
Packet duplication probability or a negative error code.

Definition at line 421 of file netem.c.

00422 {
00423         struct rtnl_netem *netem;
00424 
00425         netem = netem_qdisc(qdisc);
00426         if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_DUPLICATE))
00427                 return netem->qnm_duplicate;
00428         else
00429                 return nl_errno(ENOENT);
00430 }

int rtnl_netem_set_duplicate_correlation ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdisc Netem qdisc to be modified.
prob New packet duplication correlation probability.
Returns:
0 on sucess or a negative error code.

Definition at line 438 of file netem.c.

00439 {
00440         struct rtnl_netem *netem;
00441 
00442         netem = netem_alloc(qdisc);
00443         if (!netem)
00444                 return nl_errno(ENOMEM);
00445 
00446         netem->qnm_corr.nmc_duplicate = prob;
00447         netem->qnm_mask |= SCH_NETEM_ATTR_DUP_CORR;
00448 
00449         return 0;
00450 }

int rtnl_netem_get_duplicate_correlation ( struct rtnl_qdisc *  qdisc  ) 
Parameters:
qdisc Netem qdisc.
Returns:
Packet duplication correlation probability or a negative error code.

Definition at line 457 of file netem.c.

00458 {
00459         struct rtnl_netem *netem;
00460 
00461         netem = netem_qdisc(qdisc);
00462         if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_DUP_CORR))
00463                 return netem->qnm_corr.nmc_duplicate;
00464         else
00465                 return nl_errno(ENOENT);
00466 }

int rtnl_netem_set_delay ( struct rtnl_qdisc *  qdisc,
int  delay 
)
Parameters:
qdisc Netem qdisc to be modified.
delay New 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().

00482 {
00483         struct rtnl_netem *netem;
00484 
00485         netem = netem_alloc(qdisc);
00486         if (!netem)
00487                 return nl_errno(ENOMEM);
00488 
00489         netem->qnm_latency = nl_us2ticks(delay);
00490         netem->qnm_mask |= SCH_NETEM_ATTR_LATENCY;
00491 
00492         return 0;
00493 }

int rtnl_netem_get_delay ( struct rtnl_qdisc *  qdisc  ) 
Parameters:
qdisc Netem qdisc.
Returns:
Packet delay in micro seconds or a negative error code.

Definition at line 500 of file netem.c.

References nl_ticks2us().

00501 {
00502         struct rtnl_netem *netem;
00503 
00504         netem = netem_qdisc(qdisc);
00505         if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_LATENCY))
00506                 return nl_ticks2us(netem->qnm_latency);
00507         else
00508                 return nl_errno(ENOENT);
00509 }

int rtnl_netem_set_jitter ( struct rtnl_qdisc *  qdisc,
int  jitter 
)
Parameters:
qdisc Netem qdisc to be modified.
jitter New 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().

00518 {
00519         struct rtnl_netem *netem;
00520 
00521         netem = netem_alloc(qdisc);
00522         if (!netem)
00523                 return nl_errno(ENOMEM);
00524 
00525         netem->qnm_jitter = nl_us2ticks(jitter);
00526         netem->qnm_mask |= SCH_NETEM_ATTR_JITTER;
00527 
00528         return 0;
00529 }

int rtnl_netem_get_jitter ( struct rtnl_qdisc *  qdisc  ) 
Parameters:
qdisc Netem qdisc.
Returns:
Packet delay jitter in micro seconds or a negative error code.

Definition at line 536 of file netem.c.

References nl_ticks2us().

00537 {
00538         struct rtnl_netem *netem;
00539 
00540         netem = netem_qdisc(qdisc);
00541         if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_JITTER))
00542                 return nl_ticks2us(netem->qnm_jitter);
00543         else
00544                 return nl_errno(ENOENT);
00545 }

int rtnl_netem_set_delay_correlation ( struct rtnl_qdisc *  qdisc,
int  prob 
)
Parameters:
qdisc Netem qdisc to be modified.
prob New packet delay correlation probability.

Definition at line 552 of file netem.c.

00553 {
00554         struct rtnl_netem *netem;
00555 
00556         netem = netem_alloc(qdisc);
00557         if (!netem)
00558                 return nl_errno(ENOMEM);
00559 
00560         netem->qnm_corr.nmc_delay = prob;
00561         netem->qnm_mask |= SCH_NETEM_ATTR_DELAY_CORR;
00562 
00563         return 0;
00564 }

int rtnl_netem_get_delay_correlation ( struct rtnl_qdisc *  qdisc  ) 
Parameters:
qdisc Netem qdisc.
Returns:
Packet delay correlation probability or a negative error code.

Definition at line 571 of file netem.c.

00572 {
00573         struct rtnl_netem *netem;
00574 
00575         netem = netem_qdisc(qdisc);
00576         if (netem && (netem->qnm_mask & SCH_NETEM_ATTR_DELAY_CORR))
00577                 return netem->qnm_corr.nmc_delay;
00578         else
00579                 return nl_errno(ENOENT);
00580 }


Generated on 30 Oct 2009 for libnl by  doxygen 1.6.1