idiag_vegasinfo_obj.c 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. /*
  2. * lib/idiag/idiagnl_vegasinfo_obj.c Inet Diag TCP Vegas Info 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) 2013 Sassano Systems LLC <joe@sassanosystems.com>
  10. */
  11. #include <netlink-private/netlink.h>
  12. #include <netlink/idiag/vegasinfo.h>
  13. /**
  14. * @ingroup idiag
  15. * @defgroup idiagnl_vegasinfo Inet Diag TCP Vegas Info
  16. *
  17. * @details
  18. * @idiagnl_doc{idiagnl_vegasinfo, Inet Diag TCP Vegas Info Documentation}
  19. * @{
  20. */
  21. struct idiagnl_vegasinfo *idiagnl_vegasinfo_alloc(void)
  22. {
  23. return (struct idiagnl_vegasinfo *) nl_object_alloc(&idiagnl_vegasinfo_obj_ops);
  24. }
  25. void idiagnl_vegasinfo_get(struct idiagnl_vegasinfo *vinfo)
  26. {
  27. nl_object_get((struct nl_object *) vinfo);
  28. }
  29. void idiagnl_vegasinfo_put(struct idiagnl_vegasinfo *vinfo)
  30. {
  31. nl_object_put((struct nl_object *) vinfo);
  32. }
  33. /**
  34. * @name Attributes
  35. * @{
  36. */
  37. uint32_t idiagnl_vegasinfo_get_enabled(const struct idiagnl_vegasinfo *vinfo)
  38. {
  39. return vinfo->tcpv_enabled;
  40. }
  41. void idiagnl_vegasinfo_set_enabled(struct idiagnl_vegasinfo *vinfo, uint32_t
  42. enabled)
  43. {
  44. vinfo->tcpv_enabled = enabled;
  45. }
  46. uint32_t idiagnl_vegasinfo_get_rttcnt(const struct idiagnl_vegasinfo *vinfo)
  47. {
  48. return vinfo->tcpv_rttcnt;
  49. }
  50. void idiagnl_vegasinfo_set_rttcnt(struct idiagnl_vegasinfo *vinfo, uint32_t
  51. rttcnt)
  52. {
  53. vinfo->tcpv_rttcnt = rttcnt;
  54. }
  55. uint32_t idiagnl_vegasinfo_get_rtt(const struct idiagnl_vegasinfo *vinfo)
  56. {
  57. return vinfo->tcpv_rtt;
  58. }
  59. void idiagnl_vegasinfo_set_rtt(struct idiagnl_vegasinfo *vinfo, uint32_t rtt)
  60. {
  61. vinfo->tcpv_rtt = rtt;
  62. }
  63. uint32_t idiagnl_vegasinfo_get_minrtt(const struct idiagnl_vegasinfo *vinfo)
  64. {
  65. return vinfo->tcpv_minrtt;
  66. }
  67. void idiagnl_vegasinfo_set_minrtt(struct idiagnl_vegasinfo *vinfo, uint32_t
  68. minrtt)
  69. {
  70. vinfo->tcpv_minrtt = minrtt;
  71. }
  72. /** @} */
  73. static int idiagnl_vegasinfo_clone(struct nl_object *_dst,
  74. struct nl_object *_src)
  75. {
  76. struct idiagnl_vegasinfo *dst = (struct idiagnl_vegasinfo *) _dst;
  77. struct idiagnl_vegasinfo *src = (struct idiagnl_vegasinfo *) _src;
  78. memcpy(dst, src, sizeof(struct idiagnl_vegasinfo));
  79. return 0;
  80. }
  81. /** @cond SKIP */
  82. struct nl_object_ops idiagnl_vegasinfo_obj_ops = {
  83. .oo_name = "idiag/idiag_vegasinfo",
  84. .oo_size = sizeof(struct idiagnl_vegasinfo),
  85. .oo_clone = idiagnl_vegasinfo_clone,
  86. };
  87. /** @endcond */
  88. /** @} */