diff --git a/test/zdtm/lib/sysctl.c b/test/zdtm/lib/sysctl.c index 6f0d3ac56c..cccc9f74b9 100644 --- a/test/zdtm/lib/sysctl.c +++ b/test/zdtm/lib/sysctl.c @@ -58,6 +58,32 @@ int sysctl_write_int(const char *name, int val) return ret; } +int sysctl_read_str(const char *name, char *data, int data_len) +{ + int fd; + int ret; + + fd = open(name, O_RDONLY); + if (fd < 0) { + pr_perror("Can't open %s", name); + return fd; + } + + ret = read(fd, data, data_len - 1); + if (ret < 0) { + pr_perror("Can't read %s", name); + ret = -errno; + goto err; + } + + data[ret] = '\0'; + + ret = 0; +err: + close(fd); + return ret; +} + int sysctl_write_str(const char *name, const char *val) { int fd; diff --git a/test/zdtm/lib/sysctl.h b/test/zdtm/lib/sysctl.h index b47829fc9f..e39ac43d36 100644 --- a/test/zdtm/lib/sysctl.h +++ b/test/zdtm/lib/sysctl.h @@ -3,6 +3,7 @@ extern int sysctl_read_int(const char *name, int *data); extern int sysctl_write_int(const char *name, int val); +extern int sysctl_read_str(const char *name, char *data, int data_len); extern int sysctl_write_str(const char *name, const char *val); #endif diff --git a/test/zdtm/static/socket6_icmp.c b/test/zdtm/static/socket6_icmp.c index 5e0ec7bfe4..fc2acbebae 100644 --- a/test/zdtm/static/socket6_icmp.c +++ b/test/zdtm/static/socket6_icmp.c @@ -1,4 +1,5 @@ #include "zdtmtst.h" +#include "sysctl.h" const char *test_doc = "static test for IP6/ICMP socket\n"; const char *test_author = "समीर सिंह Sameer Singh <lumarzeli30@gmail.com>\n"; @@ -20,6 +21,8 @@ const char *test_author = "समीर सिंह Sameer Singh <lumarzeli30@g #define PACKET_SIZE 64 #define RECV_TIMEOUT 1 +#define PING_GROUP_RANGE "/proc/sys/net/ipv4/ping_group_range" + static int echo_id = 1234; int main(int argc, char **argv) @@ -36,6 +39,12 @@ int main(int argc, char **argv) sock = socket(PF_INET6, SOCK_DGRAM, IPPROTO_ICMPV6); if (sock < 0) { + char buf[16]; + gid_t current_gid = getgid(); + sysctl_read_str(PING_GROUP_RANGE, buf, 16); + + pr_perror("current GID: %d", current_gid); + pr_perror("net.ipv4.ping_group_range: %s", buf); pr_perror("Can't create socket"); return 1; } diff --git a/test/zdtm/static/socket_icmp.c b/test/zdtm/static/socket_icmp.c index 9a08369c50..a37b12b5ae 100644 --- a/test/zdtm/static/socket_icmp.c +++ b/test/zdtm/static/socket_icmp.c @@ -1,4 +1,5 @@ #include "zdtmtst.h" +#include "sysctl.h" const char *test_doc = "static test for ICMP socket\n"; const char *test_author = "समीर सिंह Sameer Singh <lumarzeli30@gmail.com>\n"; @@ -20,6 +21,8 @@ const char *test_author = "समीर सिंह Sameer Singh <lumarzeli30@g #define PACKET_SIZE 64 #define RECV_TIMEOUT 1 +#define PING_GROUP_RANGE "/proc/sys/net/ipv4/ping_group_range" + static int echo_id = 1234; int main(int argc, char **argv) @@ -36,6 +39,12 @@ int main(int argc, char **argv) sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_ICMP); if (sock < 0) { + char buf[16]; + gid_t current_gid = getgid(); + sysctl_read_str(PING_GROUP_RANGE, buf, 16); + + pr_perror("current GID: %d", current_gid); + pr_perror("net.ipv4.ping_group_range: %s", buf); pr_perror("Can't create socket"); return 1; }