@@ -73,6 +73,9 @@ int safe_getsockname(const char *file, const int lineno,
int safe_gethostname(const char *file, const int lineno,
char *name, size_t size);
+int safe_sethostname(const char *file, const int lineno,
+ const char *name, size_t size);
+
int tst_getsockport(const char *file, const int lineno, int sockfd);
unsigned short tst_get_unused_port(const char *file, const int lineno,
@@ -68,6 +68,9 @@
#define SAFE_GETHOSTNAME(name, size) \
safe_gethostname(__FILE__, __LINE__, name, size)
+#define SAFE_SETHOSTNAME(name, size) \
+ safe_sethostname(__FILE__, __LINE__, name, size)
+
#define TST_GETSOCKPORT(sockfd) \
tst_getsockport(__FILE__, __LINE__, sockfd)
@@ -469,6 +469,23 @@ int safe_gethostname(const char *file, const int lineno,
return rval;
}
+int safe_sethostname(const char *file, const int lineno,
+ const char *name, size_t size)
+{
+ int rval = sethostname(name, size);
+
+ if (rval == -1) {
+ tst_brkm_(file, lineno, TBROK | TERRNO, NULL,
+ "sethostname(%p, %zu) failed", name, size);
+ } else if (rval) {
+ tst_brkm_(file, lineno, TBROK | TERRNO, NULL,
+ "Invalid sethostname(%p, %zu) return value %d", name,
+ size, rval);
+ }
+
+ return rval;
+}
+
/*
* @return port in network byte order.
*/
Signed-off-by: Andrea Cervesato <andrea.cervesato@suse.com> --- include/safe_net_fn.h | 3 +++ include/tst_safe_net.h | 3 +++ lib/safe_net.c | 17 +++++++++++++++++ 3 files changed, 23 insertions(+)