16ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/* 26ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * netlink/route/class.h Classes 36ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * 46ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * This library is free software; you can redistribute it and/or 56ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * modify it under the terms of the GNU Lesser General Public 66ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * License as published by the Free Software Foundation version 2.1 76ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * of the License. 86ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * 96ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru * Copyright (c) 2003-2008 Thomas Graf <tgraf@suug.ch> 106ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru */ 116ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 126ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#ifndef NETLINK_CLASS_H_ 136ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#define NETLINK_CLASS_H_ 146ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 156ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/netlink.h> 166ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/route/tc.h> 176ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#include <netlink/route/qdisc.h> 186ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 196ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#ifdef __cplusplus 206ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern "C" { 216ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#endif 226ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 236ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Querustruct rtnl_class; 246ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 256ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern struct nl_object_ops class_obj_ops; 266ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 276ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern struct rtnl_class * rtnl_class_alloc(void); 286ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern void rtnl_class_put(struct rtnl_class *); 296ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int rtnl_class_alloc_cache(struct nl_sock *, int, 306ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru struct nl_cache **); 316ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern struct rtnl_class *rtnl_class_get(struct nl_cache *, int, uint32_t); 326ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 336ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/* leaf qdisc access */ 346ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern struct rtnl_qdisc * rtnl_class_leaf_qdisc(struct rtnl_class *, 356ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru struct nl_cache *); 366ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 376ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int rtnl_class_build_add_request(struct rtnl_class *, int, 386ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru struct nl_msg **); 396ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int rtnl_class_add(struct nl_sock *, struct rtnl_class *, 406ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru int); 416ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 426ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int rtnl_class_build_delete_request(struct rtnl_class *, 436ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru struct nl_msg **); 446ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int rtnl_class_delete(struct nl_sock *, struct rtnl_class *); 456ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 466ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern void rtnl_class_set_ifindex(struct rtnl_class *, int); 476ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern int rtnl_class_get_ifindex(struct rtnl_class *); 486ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern void rtnl_class_set_handle(struct rtnl_class *, uint32_t); 496ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern uint32_t rtnl_class_get_handle(struct rtnl_class *); 506ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern void rtnl_class_set_parent(struct rtnl_class *, uint32_t); 516ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern uint32_t rtnl_class_get_parent(struct rtnl_class *); 526ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern void rtnl_class_set_kind(struct rtnl_class *, const char *); 536ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern char * rtnl_class_get_kind(struct rtnl_class *); 546ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern uint64_t rtnl_class_get_stat(struct rtnl_class *, 556ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru enum rtnl_tc_stats_id); 566ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 576ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru/* iterators */ 586ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern void rtnl_class_foreach_child(struct rtnl_class *, 596ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru struct nl_cache *, 606ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru void (*cb)(struct nl_object *, 616ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru void *), 626ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru void *); 636ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queruextern void rtnl_class_foreach_cls(struct rtnl_class *, 646ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru struct nl_cache *, 656ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru void (*cb)(struct nl_object *, 666ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru void *), 676ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru void *); 686ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 696ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#ifdef __cplusplus 706ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru} 716ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#endif 726ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru 736ccf7349d61f73ac26a0675d735d903ab919c658Jean-Baptiste Queru#endif 74