libnl 1.1.4
object.h
1/*
2 * netlink/object.c Generic Cacheable Object
3 *
4 * This library is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU Lesser General Public
6 * License as published by the Free Software Foundation version 2.1
7 * of the License.
8 *
9 * Copyright (c) 2003-2006 Thomas Graf <tgraf@suug.ch>
10 */
11
12#ifndef NETLINK_OBJECT_H_
13#define NETLINK_OBJECT_H_
14
15#include <netlink/netlink.h>
16#include <netlink/utils.h>
17
18#ifdef __cplusplus
19extern "C" {
20#endif
21
22struct nl_cache;
23struct nl_object;
24struct nl_object_ops;
25
26#define OBJ_CAST(ptr) ((struct nl_object *) (ptr))
27
28/* General */
29extern struct nl_object * nl_object_alloc(struct nl_object_ops *);
30extern struct nl_object * nl_object_alloc_name(const char *);
31extern void nl_object_free(struct nl_object *);
32extern struct nl_object * nl_object_clone(struct nl_object *obj);
33extern void nl_object_get(struct nl_object *);
34extern void nl_object_put(struct nl_object *);
35extern int nl_object_shared(struct nl_object *);
36extern void nl_object_dump(struct nl_object *,
37 struct nl_dump_params *);
38extern int nl_object_identical(struct nl_object *,
39 struct nl_object *);
40extern uint32_t nl_object_diff(struct nl_object *,
41 struct nl_object *);
42extern int nl_object_match_filter(struct nl_object *,
43 struct nl_object *);
44extern char * nl_object_attrs2str(struct nl_object *,
45 uint32_t attrs, char *buf,
46 size_t);
47extern char * nl_object_attr_list(struct nl_object *,
48 char *, size_t);
49
50/* Marks */
51extern void nl_object_mark(struct nl_object *);
52extern void nl_object_unmark(struct nl_object *);
53extern int nl_object_is_marked(struct nl_object *);
54
55/* Access Functions */
56extern int nl_object_get_refcnt(struct nl_object *);
57extern struct nl_cache * nl_object_get_cache(struct nl_object *);
58static inline void * nl_object_priv(struct nl_object *obj)
59{
60 return obj;
61}
62
63
64#ifdef __cplusplus
65}
66#endif
67
68#endif
uint32_t nl_object_diff(struct nl_object *, struct nl_object *)
Compute bitmask representing difference in attribute values.
Definition: object.c:299
void nl_object_dump(struct nl_object *, struct nl_dump_params *)
Dump this object according to the specified parameters.
Definition: object.c:251
struct nl_object * nl_object_alloc_name(const char *)
Allocate a new object of kind specified by the name.
Definition: object.c:72
struct nl_object * nl_object_clone(struct nl_object *obj)
Allocate a new object and copy all data from an existing object.
Definition: object.c:95
char * nl_object_attrs2str(struct nl_object *, uint32_t attrs, char *buf, size_t)
Convert bitmask of attributes to a character string.
Definition: object.c:341
int nl_object_shared(struct nl_object *)
Check whether this object is used by multiple users.
Definition: object.c:199
void nl_object_unmark(struct nl_object *)
Remove mark from object.
Definition: object.c:224
void nl_object_put(struct nl_object *)
Release a reference from an object.
Definition: object.c:178
int nl_object_identical(struct nl_object *, struct nl_object *)
Check if the identifiers of two objects are identical.
Definition: object.c:263
char * nl_object_attr_list(struct nl_object *, char *, size_t)
Return list of attributes present in an object.
Definition: object.c:362
void nl_object_get(struct nl_object *)
Acquire a reference on a object.
Definition: object.c:167
void nl_object_free(struct nl_object *)
Free a cacheable object.
Definition: object.c:133
int nl_object_match_filter(struct nl_object *, struct nl_object *)
Match a filter against an object.
Definition: object.c:318
int nl_object_is_marked(struct nl_object *)
Return true if object is marked.
Definition: object.c:234
void nl_object_mark(struct nl_object *)
Add mark to object.
Definition: object.c:215
struct nl_object * nl_object_alloc(struct nl_object_ops *)
Allocate a new object of kind specified by the operations handle.
Definition: object.c:42
Dumping parameters.
Definition: types.h:37
Object Operations.
Definition: object-api.h:255