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