1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1-only */
2*4dc78e53SAndroid Build Coastguard Worker /*
3*4dc78e53SAndroid Build Coastguard Worker * Copyright (c) 2003-2012 Thomas Graf <[email protected]>
4*4dc78e53SAndroid Build Coastguard Worker */
5*4dc78e53SAndroid Build Coastguard Worker
6*4dc78e53SAndroid Build Coastguard Worker #ifndef NETLINK_OBJECT_H_
7*4dc78e53SAndroid Build Coastguard Worker #define NETLINK_OBJECT_H_
8*4dc78e53SAndroid Build Coastguard Worker
9*4dc78e53SAndroid Build Coastguard Worker #include <netlink/netlink.h>
10*4dc78e53SAndroid Build Coastguard Worker #include <netlink/utils.h>
11*4dc78e53SAndroid Build Coastguard Worker
12*4dc78e53SAndroid Build Coastguard Worker #ifdef __cplusplus
13*4dc78e53SAndroid Build Coastguard Worker extern "C" {
14*4dc78e53SAndroid Build Coastguard Worker #endif
15*4dc78e53SAndroid Build Coastguard Worker
16*4dc78e53SAndroid Build Coastguard Worker struct nl_cache;
17*4dc78e53SAndroid Build Coastguard Worker struct nl_object;
18*4dc78e53SAndroid Build Coastguard Worker struct nl_object_ops;
19*4dc78e53SAndroid Build Coastguard Worker
20*4dc78e53SAndroid Build Coastguard Worker #define OBJ_CAST(ptr) ((struct nl_object *) (ptr))
21*4dc78e53SAndroid Build Coastguard Worker
22*4dc78e53SAndroid Build Coastguard Worker /* General */
23*4dc78e53SAndroid Build Coastguard Worker extern struct nl_object * nl_object_alloc(struct nl_object_ops *);
24*4dc78e53SAndroid Build Coastguard Worker extern int nl_object_alloc_name(const char *,
25*4dc78e53SAndroid Build Coastguard Worker struct nl_object **);
26*4dc78e53SAndroid Build Coastguard Worker extern void nl_object_free(struct nl_object *);
27*4dc78e53SAndroid Build Coastguard Worker extern struct nl_object * nl_object_clone(struct nl_object *obj);
28*4dc78e53SAndroid Build Coastguard Worker extern int nl_object_update(struct nl_object *dst,
29*4dc78e53SAndroid Build Coastguard Worker struct nl_object *src);
30*4dc78e53SAndroid Build Coastguard Worker extern void nl_object_get(struct nl_object *);
31*4dc78e53SAndroid Build Coastguard Worker extern void nl_object_put(struct nl_object *);
32*4dc78e53SAndroid Build Coastguard Worker extern int nl_object_shared(struct nl_object *);
33*4dc78e53SAndroid Build Coastguard Worker extern void nl_object_dump(struct nl_object *,
34*4dc78e53SAndroid Build Coastguard Worker struct nl_dump_params *);
35*4dc78e53SAndroid Build Coastguard Worker extern void nl_object_dump_buf(struct nl_object *, char *, size_t);
36*4dc78e53SAndroid Build Coastguard Worker extern int nl_object_identical(struct nl_object *,
37*4dc78e53SAndroid Build Coastguard Worker struct nl_object *);
38*4dc78e53SAndroid Build Coastguard Worker extern uint32_t nl_object_diff(struct nl_object *,
39*4dc78e53SAndroid Build Coastguard Worker struct nl_object *);
40*4dc78e53SAndroid Build Coastguard Worker extern uint64_t nl_object_diff64(struct nl_object *,
41*4dc78e53SAndroid Build Coastguard Worker struct nl_object *);
42*4dc78e53SAndroid Build Coastguard Worker extern int nl_object_match_filter(struct nl_object *,
43*4dc78e53SAndroid Build Coastguard Worker struct nl_object *);
44*4dc78e53SAndroid Build Coastguard Worker extern char * nl_object_attrs2str(struct nl_object *,
45*4dc78e53SAndroid Build Coastguard Worker uint32_t attrs, char *buf,
46*4dc78e53SAndroid Build Coastguard Worker size_t);
47*4dc78e53SAndroid Build Coastguard Worker extern char * nl_object_attr_list(struct nl_object *,
48*4dc78e53SAndroid Build Coastguard Worker char *, size_t);
49*4dc78e53SAndroid Build Coastguard Worker extern void nl_object_keygen(struct nl_object *,
50*4dc78e53SAndroid Build Coastguard Worker uint32_t *, uint32_t);
51*4dc78e53SAndroid Build Coastguard Worker
52*4dc78e53SAndroid Build Coastguard Worker /* Marks */
53*4dc78e53SAndroid Build Coastguard Worker extern void nl_object_mark(struct nl_object *);
54*4dc78e53SAndroid Build Coastguard Worker extern void nl_object_unmark(struct nl_object *);
55*4dc78e53SAndroid Build Coastguard Worker extern int nl_object_is_marked(struct nl_object *);
56*4dc78e53SAndroid Build Coastguard Worker
57*4dc78e53SAndroid Build Coastguard Worker /* Access Functions */
58*4dc78e53SAndroid Build Coastguard Worker extern int nl_object_get_refcnt(struct nl_object *);
59*4dc78e53SAndroid Build Coastguard Worker extern struct nl_cache * nl_object_get_cache(struct nl_object *);
60*4dc78e53SAndroid Build Coastguard Worker extern const char * nl_object_get_type(const struct nl_object *);
61*4dc78e53SAndroid Build Coastguard Worker extern int nl_object_get_msgtype(const struct nl_object *);
62*4dc78e53SAndroid Build Coastguard Worker struct nl_object_ops * nl_object_get_ops(const struct nl_object *);
63*4dc78e53SAndroid Build Coastguard Worker uint32_t nl_object_get_id_attrs(struct nl_object *obj);
64*4dc78e53SAndroid Build Coastguard Worker
65*4dc78e53SAndroid Build Coastguard Worker
nl_object_priv(struct nl_object * obj)66*4dc78e53SAndroid Build Coastguard Worker static inline void * nl_object_priv(struct nl_object *obj)
67*4dc78e53SAndroid Build Coastguard Worker {
68*4dc78e53SAndroid Build Coastguard Worker return obj;
69*4dc78e53SAndroid Build Coastguard Worker }
70*4dc78e53SAndroid Build Coastguard Worker
71*4dc78e53SAndroid Build Coastguard Worker
72*4dc78e53SAndroid Build Coastguard Worker #ifdef __cplusplus
73*4dc78e53SAndroid Build Coastguard Worker }
74*4dc78e53SAndroid Build Coastguard Worker #endif
75*4dc78e53SAndroid Build Coastguard Worker
76*4dc78e53SAndroid Build Coastguard Worker #endif
77