idiag: fix idiagnl_exts2str()
idiagnl_exts2str() is used to print req->idiag_ext,
which is the extention types combined as flags, such as
( (1 << (INET_DIAG_TOS - 1)) | (1 << (INET_DIAG_MEMINFO - 1)) ).
This function was wrong from the beginning because the string lookup
array had indexes such as 'INET_DIAG_TOS', instead of '(1 << (INET_DIAG_TOS - 1)'.
Fix also idiagnl_attrs2str() which now converts an extension
type (e.g. INET_DIAG_TOS) to a string. Still this function is
deprecated, as the function name is not clear and it is not
used or very useful.
Fixes: 22eb2569a5
Acked-by: Thomas Graf <tgraf@suug.ch>
Signed-off-by: Thomas Haller <thaller@redhat.com>
This commit is contained in:
parent
91e61c8f05
commit
f0e3017d0e
1 changed files with 20 additions and 9 deletions
|
@ -156,7 +156,7 @@ int idiagnl_str2timer(const char *name)
|
|||
return __str2type(name, idiag_timers, ARRAY_SIZE(idiag_timers));
|
||||
}
|
||||
|
||||
static const struct trans_tbl idiag_exts[] = {
|
||||
static const struct trans_tbl idiag_attrs[] = {
|
||||
__ADD(INET_DIAG_NONE, none),
|
||||
__ADD(INET_DIAG_MEMINFO, meminfo),
|
||||
__ADD(INET_DIAG_INFO, info),
|
||||
|
@ -169,24 +169,35 @@ static const struct trans_tbl idiag_exts[] = {
|
|||
};
|
||||
|
||||
/**
|
||||
* Convert inet diag extension flags to a string.
|
||||
* @arg attrs inet diag extension flag (e.g., INET_DIAG_MEMINFO)
|
||||
* Convert inet diag extension type to a string.
|
||||
* @arg attrs inet diag extension type (e.g. INET_DIAG_MEMINFO)
|
||||
* @arg buf output buffer which will hold string result
|
||||
* @arg len length in bytes of the output buffer
|
||||
*
|
||||
* @return string representation of attrs or an empty string.
|
||||
* @deprecated This function returns almost the same as idiagnl_exts2str(),
|
||||
* except that the latter only supports @attrs of uint8_t.
|
||||
* @return string representation of inet diag extension type or an empty string.
|
||||
* @deprecated: don't use this function. It is not very useful and should
|
||||
* never have been exposed as public API.
|
||||
*/
|
||||
char *idiagnl_attrs2str(int attrs, char *buf, size_t len)
|
||||
{
|
||||
return __flags2str(attrs, buf, len, idiag_exts, ARRAY_SIZE(idiag_exts));
|
||||
return __type2str(attrs, buf, len, idiag_attrs, ARRAY_SIZE(idiag_attrs));
|
||||
}
|
||||
|
||||
static const struct trans_tbl idiag_exts[] = {
|
||||
__ADD((1 << (INET_DIAG_MEMINFO - 1)), meminfo),
|
||||
__ADD((1 << (INET_DIAG_INFO - 1)), info),
|
||||
__ADD((1 << (INET_DIAG_VEGASINFO - 1)), vegasinfo),
|
||||
__ADD((1 << (INET_DIAG_CONG - 1)), congestion),
|
||||
__ADD((1 << (INET_DIAG_TOS - 1)), tos),
|
||||
__ADD((1 << (INET_DIAG_TCLASS - 1)), tclass),
|
||||
__ADD((1 << (INET_DIAG_SKMEMINFO - 1)), skmeminfo),
|
||||
__ADD((1 << (INET_DIAG_SHUTDOWN - 1)), shutdown),
|
||||
};
|
||||
|
||||
/**
|
||||
* Convert inet diag extension flags to a string.
|
||||
* @arg attrs inet diag extension flags (e.g., (INET_DIAG_MEMINFO |
|
||||
* INET_DIAG_CONG | INET_DIAG_TOS))
|
||||
* @arg attrs inet diag extension flags (e.g.
|
||||
* ( (1<<(INET_DIAG_MEMINFO-1)) | (1<<(INET_DIAG_CONG-1)) | (1<<(INET_DIAG_TOS-1)) ) )
|
||||
* @arg buf Output buffer to hold string representation
|
||||
* @arg len length in bytes of the output buffer
|
||||
*/
|
||||
|
|
Loading…
Add table
Reference in a new issue