}
}
+int getsockopt_int(int fd, int level, int optname, int *ret) {
+ int v;
+ socklen_t sl = sizeof(v);
+
+ assert(fd >= 0);
+ assert(ret);
+
+ if (getsockopt(fd, level, optname, &v, &sl) < 0)
+ return negative_errno();
+ if (sl != sizeof(v))
+ return -EIO;
+
+ *ret = v;
+ return 0;
+}
+
int socket_bind_to_ifname(int fd, const char *ifname) {
assert(fd >= 0);
}
int socket_get_mtu(int fd, int af, size_t *ret) {
- int mtu = 0, r; /* Avoid maybe-uninitialized false positive */
+ int mtu, r;
if (af == AF_UNSPEC) {
af = socket_get_family(fd);
return 0;
}
-static inline int getsockopt_int(int fd, int level, int optname, int *ret) {
- int v;
- socklen_t sl = sizeof(v);
-
- if (getsockopt(fd, level, optname, &v, &sl) < 0)
- return -errno;
- if (sl != sizeof(v))
- return -EIO;
-
- *ret = v;
- return 0;
-}
+int getsockopt_int(int fd, int level, int optname, int *ret);
int socket_bind_to_ifname(int fd, const char *ifname);
int socket_bind_to_ifindex(int fd, int ifindex);