object.h 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  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-2012 Thomas Graf <tgraf@suug.ch>
  10. */
  11. #ifndef NETLINK_OBJECT_H_
  12. #define NETLINK_OBJECT_H_
  13. #include <netlink/netlink.h>
  14. #include <netlink/utils.h>
  15. #ifdef __cplusplus
  16. extern "C" {
  17. #endif
  18. struct nl_cache;
  19. struct nl_object;
  20. struct nl_object_ops;
  21. #define OBJ_CAST(ptr) ((struct nl_object *) (ptr))
  22. /* General */
  23. extern struct nl_object * nl_object_alloc(struct nl_object_ops *);
  24. extern int nl_object_alloc_name(const char *,
  25. struct nl_object **);
  26. extern void nl_object_free(struct nl_object *);
  27. extern struct nl_object * nl_object_clone(struct nl_object *obj);
  28. extern int nl_object_update(struct nl_object *dst,
  29. struct nl_object *src);
  30. extern void nl_object_get(struct nl_object *);
  31. extern void nl_object_put(struct nl_object *);
  32. extern int nl_object_shared(struct nl_object *);
  33. extern void nl_object_dump(struct nl_object *,
  34. struct nl_dump_params *);
  35. extern void nl_object_dump_buf(struct nl_object *, char *, size_t);
  36. extern int nl_object_identical(struct nl_object *,
  37. struct nl_object *);
  38. extern uint32_t nl_object_diff(struct nl_object *,
  39. struct nl_object *);
  40. extern int nl_object_match_filter(struct nl_object *,
  41. struct nl_object *);
  42. extern char * nl_object_attrs2str(struct nl_object *,
  43. uint32_t attrs, char *buf,
  44. size_t);
  45. extern char * nl_object_attr_list(struct nl_object *,
  46. char *, size_t);
  47. extern void nl_object_keygen(struct nl_object *,
  48. uint32_t *, uint32_t);
  49. /* Marks */
  50. extern void nl_object_mark(struct nl_object *);
  51. extern void nl_object_unmark(struct nl_object *);
  52. extern int nl_object_is_marked(struct nl_object *);
  53. /* Access Functions */
  54. extern int nl_object_get_refcnt(struct nl_object *);
  55. extern struct nl_cache * nl_object_get_cache(struct nl_object *);
  56. extern const char * nl_object_get_type(const struct nl_object *);
  57. extern int nl_object_get_msgtype(const struct nl_object *);
  58. struct nl_object_ops * nl_object_get_ops(const struct nl_object *);
  59. uint32_t nl_object_get_id_attrs(struct nl_object *obj);
  60. static inline void * nl_object_priv(struct nl_object *obj)
  61. {
  62. return obj;
  63. }
  64. #ifdef __cplusplus
  65. }
  66. #endif
  67. #endif