Home | History | Annotate | Download | only in netlink
      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-2008 Thomas Graf <tgraf (at) 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
     19 extern "C" {
     20 #endif
     21 
     22 struct nl_cache;
     23 struct nl_object;
     24 struct nl_object_ops;
     25 
     26 #define OBJ_CAST(ptr)		((struct nl_object *) (ptr))
     27 
     28 /* General */
     29 extern struct nl_object *	nl_object_alloc(struct nl_object_ops *);
     30 extern int			nl_object_alloc_name(const char *,
     31 						     struct nl_object **);
     32 extern void			nl_object_free(struct nl_object *);
     33 extern struct nl_object *	nl_object_clone(struct nl_object *obj);
     34 extern void			nl_object_get(struct nl_object *);
     35 extern void			nl_object_put(struct nl_object *);
     36 extern int			nl_object_shared(struct nl_object *);
     37 extern void			nl_object_dump(struct nl_object *,
     38 					       struct nl_dump_params *);
     39 extern int			nl_object_identical(struct nl_object *,
     40 						    struct nl_object *);
     41 extern uint32_t			nl_object_diff(struct nl_object *,
     42 					       struct nl_object *);
     43 extern int			nl_object_match_filter(struct nl_object *,
     44 						       struct nl_object *);
     45 extern char *			nl_object_attrs2str(struct nl_object *,
     46 						    uint32_t attrs, char *buf,
     47 						    size_t);
     48 extern char *			nl_object_attr_list(struct nl_object *,
     49 						    char *, size_t);
     50 
     51 /* Marks */
     52 extern void			nl_object_mark(struct nl_object *);
     53 extern void			nl_object_unmark(struct nl_object *);
     54 extern int			nl_object_is_marked(struct nl_object *);
     55 
     56 /* Access Functions */
     57 extern int			nl_object_get_refcnt(struct nl_object *);
     58 extern struct nl_cache *	nl_object_get_cache(struct nl_object *);
     59 static inline void *		nl_object_priv(struct nl_object *obj)
     60 {
     61 	return obj;
     62 }
     63 
     64 
     65 #ifdef __cplusplus
     66 }
     67 #endif
     68 
     69 #endif
     70