libnl 1.1.4
Functions

Functions

char * rtnl_link_vlan_flags2str (int flags, char *buf, size_t len)
 
int rtnl_link_vlan_str2flags (const char *name)
 
int rtnl_link_vlan_set_id (struct rtnl_link *link, int id)
 
int rtnl_link_vlan_get_id (struct rtnl_link *link)
 
int rtnl_link_vlan_set_flags (struct rtnl_link *link, unsigned int flags)
 
int rtnl_link_vlan_unset_flags (struct rtnl_link *link, unsigned int flags)
 
unsigned int rtnl_link_vlan_get_flags (struct rtnl_link *link)
 
int rtnl_link_vlan_set_ingress_map (struct rtnl_link *link, int from, uint32_t to)
 
uint32_t * rtnl_link_vlan_get_ingress_map (struct rtnl_link *link)
 
int rtnl_link_vlan_set_egress_map (struct rtnl_link *link, uint32_t from, int to)
 
struct vlan_maprtnl_link_vlan_get_egress_map (struct rtnl_link *link, int *negress)
 

Detailed Description

Function Documentation

◆ rtnl_link_vlan_flags2str()

char * rtnl_link_vlan_flags2str ( int  flags,
char *  buf,
size_t  len 
)

Definition at line 54 of file vlan.c.

55{
56 return __flags2str(flags, buf, len, vlan_flags, ARRAY_SIZE(vlan_flags));
57}

◆ rtnl_link_vlan_str2flags()

int rtnl_link_vlan_str2flags ( const char *  name)

Definition at line 59 of file vlan.c.

60{
61 return __str2flags(name, vlan_flags, ARRAY_SIZE(vlan_flags));
62}

◆ rtnl_link_vlan_set_id()

int rtnl_link_vlan_set_id ( struct rtnl_link *  link,
int  id 
)

Definition at line 347 of file vlan.c.

348{
349 struct vlan_info *vi = link->l_info;
350
351 if (link->l_info_ops != &vlan_info_ops || !link->l_info_ops)
352 return nl_error(EOPNOTSUPP, "Not a VLAN link");
353
354 vi->vi_vlan_id = id;
355 vi->vi_mask |= VLAN_HAS_ID;
356
357 return 0;
358}

◆ rtnl_link_vlan_get_id()

int rtnl_link_vlan_get_id ( struct rtnl_link *  link)

Definition at line 360 of file vlan.c.

361{
362 struct vlan_info *vi = link->l_info;
363
364 if (link->l_info_ops != &vlan_info_ops || !link->l_info_ops)
365 return nl_error(EOPNOTSUPP, "Not a VLAN link");
366
367 if (vi->vi_mask & VLAN_HAS_ID)
368 return vi->vi_vlan_id;
369 else
370 return 0;
371}

◆ rtnl_link_vlan_set_flags()

int rtnl_link_vlan_set_flags ( struct rtnl_link *  link,
unsigned int  flags 
)

Definition at line 373 of file vlan.c.

374{
375 struct vlan_info *vi = link->l_info;
376
377 if (link->l_info_ops != &vlan_info_ops || !link->l_info_ops)
378 return nl_error(EOPNOTSUPP, "Not a VLAN link");
379
380 vi->vi_flags_mask |= flags;
381 vi->vi_flags |= flags;
382 vi->vi_mask |= VLAN_HAS_FLAGS;
383
384 return 0;
385}

◆ rtnl_link_vlan_unset_flags()

int rtnl_link_vlan_unset_flags ( struct rtnl_link *  link,
unsigned int  flags 
)

Definition at line 387 of file vlan.c.

388{
389 struct vlan_info *vi = link->l_info;
390
391 if (link->l_info_ops != &vlan_info_ops || !link->l_info_ops)
392 return nl_error(EOPNOTSUPP, "Not a VLAN link");
393
394 vi->vi_flags_mask |= flags;
395 vi->vi_flags &= ~flags;
396 vi->vi_mask |= VLAN_HAS_FLAGS;
397
398 return 0;
399}

◆ rtnl_link_vlan_get_flags()

unsigned int rtnl_link_vlan_get_flags ( struct rtnl_link *  link)

Definition at line 401 of file vlan.c.

402{
403 struct vlan_info *vi = link->l_info;
404
405 if (link->l_info_ops != &vlan_info_ops || !link->l_info_ops)
406 return nl_error(EOPNOTSUPP, "Not a VLAN link");
407
408 return vi->vi_flags;
409}

◆ rtnl_link_vlan_set_ingress_map()

int rtnl_link_vlan_set_ingress_map ( struct rtnl_link *  link,
int  from,
uint32_t  to 
)

Definition at line 411 of file vlan.c.

413{
414 struct vlan_info *vi = link->l_info;
415
416 if (link->l_info_ops != &vlan_info_ops || !link->l_info_ops)
417 return nl_error(EOPNOTSUPP, "Not a VLAN link");
418
419 if (from < 0 || from > VLAN_PRIO_MAX)
420 return nl_error(EINVAL, "Invalid vlan prio 0..%d",
421 VLAN_PRIO_MAX);
422
423 vi->vi_ingress_qos[from] = to;
424 vi->vi_mask |= VLAN_HAS_INGRESS_QOS;
425
426 return 0;
427}

◆ rtnl_link_vlan_get_ingress_map()

uint32_t * rtnl_link_vlan_get_ingress_map ( struct rtnl_link *  link)

Definition at line 429 of file vlan.c.

430{
431 struct vlan_info *vi = link->l_info;
432
433 if (link->l_info_ops != &vlan_info_ops || !link->l_info_ops) {
434 nl_error(EOPNOTSUPP, "Not a VLAN link");
435 return NULL;
436 }
437
438 if (vi->vi_mask & VLAN_HAS_INGRESS_QOS)
439 return vi->vi_ingress_qos;
440 else
441 return NULL;
442}

◆ rtnl_link_vlan_set_egress_map()

int rtnl_link_vlan_set_egress_map ( struct rtnl_link *  link,
uint32_t  from,
int  to 
)

Definition at line 444 of file vlan.c.

445{
446 struct vlan_info *vi = link->l_info;
447
448 if (link->l_info_ops != &vlan_info_ops || !link->l_info_ops)
449 return nl_error(EOPNOTSUPP, "Not a VLAN link");
450
451 if (to < 0 || to > VLAN_PRIO_MAX)
452 return nl_error(EINVAL, "Invalid vlan prio 0..%d",
453 VLAN_PRIO_MAX);
454
455 if (vi->vi_negress >= vi->vi_egress_size) {
456 int new_size = vi->vi_egress_size + 32;
457 void *ptr;
458
459 ptr = realloc(vi->vi_egress_qos, new_size);
460 if (!ptr)
461 return nl_errno(ENOMEM);
462
463 vi->vi_egress_qos = ptr;
464 vi->vi_egress_size = new_size;
465 }
466
467 vi->vi_egress_qos[vi->vi_negress].vm_from = from;
468 vi->vi_egress_qos[vi->vi_negress].vm_to = to;
469 vi->vi_negress++;
470 vi->vi_mask |= VLAN_HAS_EGRESS_QOS;
471
472 return 0;
473}

◆ rtnl_link_vlan_get_egress_map()

struct vlan_map * rtnl_link_vlan_get_egress_map ( struct rtnl_link *  link,
int *  negress 
)

Definition at line 475 of file vlan.c.

477{
478 struct vlan_info *vi = link->l_info;
479
480 if (link->l_info_ops != &vlan_info_ops || !link->l_info_ops) {
481 nl_error(EOPNOTSUPP, "Not a VLAN link");
482 return NULL;
483 }
484
485 if (negress == NULL) {
486 nl_error(EINVAL, "Require pointer to store negress");
487 return NULL;
488 }
489
490 if (vi->vi_mask & VLAN_HAS_EGRESS_QOS) {
491 *negress = vi->vi_negress;
492 return vi->vi_egress_qos;
493 } else {
494 *negress = 0;
495 return NULL;
496 }
497}