xref: /aosp_15_r20/external/libnl/lib/idiag/idiag_vegasinfo_obj.c (revision 4dc78e53d49367fa8e61b07018507c90983a077d)
1*4dc78e53SAndroid Build Coastguard Worker /* SPDX-License-Identifier: LGPL-2.1-only */
2*4dc78e53SAndroid Build Coastguard Worker /*
3*4dc78e53SAndroid Build Coastguard Worker  * Copyright (c) 2013 Sassano Systems LLC <[email protected]>
4*4dc78e53SAndroid Build Coastguard Worker  */
5*4dc78e53SAndroid Build Coastguard Worker 
6*4dc78e53SAndroid Build Coastguard Worker #include "nl-default.h"
7*4dc78e53SAndroid Build Coastguard Worker 
8*4dc78e53SAndroid Build Coastguard Worker #include <netlink/idiag/vegasinfo.h>
9*4dc78e53SAndroid Build Coastguard Worker 
10*4dc78e53SAndroid Build Coastguard Worker #include "nl-idiag.h"
11*4dc78e53SAndroid Build Coastguard Worker 
12*4dc78e53SAndroid Build Coastguard Worker /**
13*4dc78e53SAndroid Build Coastguard Worker  * @ingroup idiag
14*4dc78e53SAndroid Build Coastguard Worker  * @defgroup idiagnl_vegasinfo Inet Diag TCP Vegas Info
15*4dc78e53SAndroid Build Coastguard Worker  *
16*4dc78e53SAndroid Build Coastguard Worker  * @details
17*4dc78e53SAndroid Build Coastguard Worker  * @idiagnl_doc{idiagnl_vegasinfo, Inet Diag TCP Vegas Info Documentation}
18*4dc78e53SAndroid Build Coastguard Worker  * @{
19*4dc78e53SAndroid Build Coastguard Worker  */
idiagnl_vegasinfo_alloc(void)20*4dc78e53SAndroid Build Coastguard Worker struct idiagnl_vegasinfo *idiagnl_vegasinfo_alloc(void)
21*4dc78e53SAndroid Build Coastguard Worker {
22*4dc78e53SAndroid Build Coastguard Worker 	return (struct idiagnl_vegasinfo *) nl_object_alloc(&idiagnl_vegasinfo_obj_ops);
23*4dc78e53SAndroid Build Coastguard Worker }
24*4dc78e53SAndroid Build Coastguard Worker 
idiagnl_vegasinfo_get(struct idiagnl_vegasinfo * vinfo)25*4dc78e53SAndroid Build Coastguard Worker void idiagnl_vegasinfo_get(struct idiagnl_vegasinfo *vinfo)
26*4dc78e53SAndroid Build Coastguard Worker {
27*4dc78e53SAndroid Build Coastguard Worker 	nl_object_get((struct nl_object *) vinfo);
28*4dc78e53SAndroid Build Coastguard Worker }
29*4dc78e53SAndroid Build Coastguard Worker 
idiagnl_vegasinfo_put(struct idiagnl_vegasinfo * vinfo)30*4dc78e53SAndroid Build Coastguard Worker void idiagnl_vegasinfo_put(struct idiagnl_vegasinfo *vinfo)
31*4dc78e53SAndroid Build Coastguard Worker {
32*4dc78e53SAndroid Build Coastguard Worker 	nl_object_put((struct nl_object *) vinfo);
33*4dc78e53SAndroid Build Coastguard Worker }
34*4dc78e53SAndroid Build Coastguard Worker 
35*4dc78e53SAndroid Build Coastguard Worker /**
36*4dc78e53SAndroid Build Coastguard Worker  * @name Attributes
37*4dc78e53SAndroid Build Coastguard Worker  * @{
38*4dc78e53SAndroid Build Coastguard Worker  */
idiagnl_vegasinfo_get_enabled(const struct idiagnl_vegasinfo * vinfo)39*4dc78e53SAndroid Build Coastguard Worker uint32_t idiagnl_vegasinfo_get_enabled(const struct idiagnl_vegasinfo *vinfo)
40*4dc78e53SAndroid Build Coastguard Worker {
41*4dc78e53SAndroid Build Coastguard Worker 	return vinfo->tcpv_enabled;
42*4dc78e53SAndroid Build Coastguard Worker }
43*4dc78e53SAndroid Build Coastguard Worker 
idiagnl_vegasinfo_set_enabled(struct idiagnl_vegasinfo * vinfo,uint32_t enabled)44*4dc78e53SAndroid Build Coastguard Worker void idiagnl_vegasinfo_set_enabled(struct idiagnl_vegasinfo *vinfo, uint32_t
45*4dc78e53SAndroid Build Coastguard Worker 		enabled)
46*4dc78e53SAndroid Build Coastguard Worker {
47*4dc78e53SAndroid Build Coastguard Worker 	vinfo->tcpv_enabled = enabled;
48*4dc78e53SAndroid Build Coastguard Worker }
49*4dc78e53SAndroid Build Coastguard Worker 
idiagnl_vegasinfo_get_rttcnt(const struct idiagnl_vegasinfo * vinfo)50*4dc78e53SAndroid Build Coastguard Worker uint32_t idiagnl_vegasinfo_get_rttcnt(const struct idiagnl_vegasinfo *vinfo)
51*4dc78e53SAndroid Build Coastguard Worker {
52*4dc78e53SAndroid Build Coastguard Worker 	return vinfo->tcpv_rttcnt;
53*4dc78e53SAndroid Build Coastguard Worker }
54*4dc78e53SAndroid Build Coastguard Worker 
idiagnl_vegasinfo_set_rttcnt(struct idiagnl_vegasinfo * vinfo,uint32_t rttcnt)55*4dc78e53SAndroid Build Coastguard Worker void idiagnl_vegasinfo_set_rttcnt(struct idiagnl_vegasinfo *vinfo, uint32_t
56*4dc78e53SAndroid Build Coastguard Worker 		rttcnt)
57*4dc78e53SAndroid Build Coastguard Worker {
58*4dc78e53SAndroid Build Coastguard Worker 	vinfo->tcpv_rttcnt = rttcnt;
59*4dc78e53SAndroid Build Coastguard Worker }
60*4dc78e53SAndroid Build Coastguard Worker 
idiagnl_vegasinfo_get_rtt(const struct idiagnl_vegasinfo * vinfo)61*4dc78e53SAndroid Build Coastguard Worker uint32_t idiagnl_vegasinfo_get_rtt(const struct idiagnl_vegasinfo *vinfo)
62*4dc78e53SAndroid Build Coastguard Worker {
63*4dc78e53SAndroid Build Coastguard Worker 	return vinfo->tcpv_rtt;
64*4dc78e53SAndroid Build Coastguard Worker }
65*4dc78e53SAndroid Build Coastguard Worker 
idiagnl_vegasinfo_set_rtt(struct idiagnl_vegasinfo * vinfo,uint32_t rtt)66*4dc78e53SAndroid Build Coastguard Worker void idiagnl_vegasinfo_set_rtt(struct idiagnl_vegasinfo *vinfo, uint32_t rtt)
67*4dc78e53SAndroid Build Coastguard Worker {
68*4dc78e53SAndroid Build Coastguard Worker 	vinfo->tcpv_rtt = rtt;
69*4dc78e53SAndroid Build Coastguard Worker }
70*4dc78e53SAndroid Build Coastguard Worker 
idiagnl_vegasinfo_get_minrtt(const struct idiagnl_vegasinfo * vinfo)71*4dc78e53SAndroid Build Coastguard Worker uint32_t idiagnl_vegasinfo_get_minrtt(const struct idiagnl_vegasinfo *vinfo)
72*4dc78e53SAndroid Build Coastguard Worker {
73*4dc78e53SAndroid Build Coastguard Worker 	return vinfo->tcpv_minrtt;
74*4dc78e53SAndroid Build Coastguard Worker }
75*4dc78e53SAndroid Build Coastguard Worker 
idiagnl_vegasinfo_set_minrtt(struct idiagnl_vegasinfo * vinfo,uint32_t minrtt)76*4dc78e53SAndroid Build Coastguard Worker void idiagnl_vegasinfo_set_minrtt(struct idiagnl_vegasinfo *vinfo, uint32_t
77*4dc78e53SAndroid Build Coastguard Worker 		minrtt)
78*4dc78e53SAndroid Build Coastguard Worker {
79*4dc78e53SAndroid Build Coastguard Worker 	vinfo->tcpv_minrtt = minrtt;
80*4dc78e53SAndroid Build Coastguard Worker }
81*4dc78e53SAndroid Build Coastguard Worker /** @} */
82*4dc78e53SAndroid Build Coastguard Worker 
83*4dc78e53SAndroid Build Coastguard Worker /** @cond SKIP */
idiagnl_vegasinfo_compare(struct nl_object * _a,struct nl_object * _b,uint64_t attrs,int flags)84*4dc78e53SAndroid Build Coastguard Worker static uint64_t idiagnl_vegasinfo_compare(struct nl_object *_a, struct nl_object *_b,
85*4dc78e53SAndroid Build Coastguard Worker                                           uint64_t attrs, int flags)
86*4dc78e53SAndroid Build Coastguard Worker {
87*4dc78e53SAndroid Build Coastguard Worker 	struct idiagnl_vegasinfo *a = (struct idiagnl_vegasinfo *) _a;
88*4dc78e53SAndroid Build Coastguard Worker 	struct idiagnl_vegasinfo *b = (struct idiagnl_vegasinfo *) _b;
89*4dc78e53SAndroid Build Coastguard Worker 
90*4dc78e53SAndroid Build Coastguard Worker 	/* vegasinfo is a very simple object. It has no attribe flags (ce_mask),
91*4dc78e53SAndroid Build Coastguard Worker 	 * hence compare just returns 0 or 1, not a bit mask of attributes. */
92*4dc78e53SAndroid Build Coastguard Worker 	return a->tcpv_enabled != b->tcpv_enabled ||
93*4dc78e53SAndroid Build Coastguard Worker 	       a->tcpv_rttcnt != b->tcpv_rttcnt ||
94*4dc78e53SAndroid Build Coastguard Worker 	       a->tcpv_rtt != b->tcpv_rtt ||
95*4dc78e53SAndroid Build Coastguard Worker 	       a->tcpv_minrtt != b->tcpv_minrtt;
96*4dc78e53SAndroid Build Coastguard Worker }
97*4dc78e53SAndroid Build Coastguard Worker 
98*4dc78e53SAndroid Build Coastguard Worker struct nl_object_ops idiagnl_vegasinfo_obj_ops = {
99*4dc78e53SAndroid Build Coastguard Worker 	.oo_name	= "idiag/idiag_vegasinfo",
100*4dc78e53SAndroid Build Coastguard Worker 	.oo_size	= sizeof(struct idiagnl_vegasinfo),
101*4dc78e53SAndroid Build Coastguard Worker 	.oo_compare     = idiagnl_vegasinfo_compare,
102*4dc78e53SAndroid Build Coastguard Worker };
103*4dc78e53SAndroid Build Coastguard Worker /** @endcond */
104*4dc78e53SAndroid Build Coastguard Worker /** @} */
105