return map_nt_error_from_unix(errno);
}
+ sock->backend_name = "ipv4";
+
return NT_STATUS_OK;
}
}
srv_ip = interpret_addr2(srv_address);
+ if (!srv_ip.addr) {
+ return NT_STATUS_BAD_NETWORK_NAME;
+ }
ZERO_STRUCT(srv_addr);
#ifdef HAVE_SOCK_SIN_LEN
(*new_sock)->private_data = NULL;
(*new_sock)->ops = sock->ops;
+ (*new_sock)->backend_name = sock->backend_name;
return NT_STATUS_OK;
}
return sock->fd;
}
+static NTSTATUS ipv4_pending(struct socket_context *sock, size_t *npending)
+{
+ int value = 0;
+ if (ioctl(sock->fd, FIONREAD, &value) == 0) {
+ *npending = value;
+ return NT_STATUS_OK;
+ }
+ return map_nt_error_from_unix(errno);
+}
+
static const struct socket_ops ipv4_ops = {
.name = "ipv4",
.fn_init = ipv4_init,
.fn_recvfrom = ipv4_recvfrom,
.fn_send = ipv4_send,
.fn_sendto = ipv4_sendto,
+ .fn_pending = ipv4_pending,
.fn_close = ipv4_close,
.fn_set_option = ipv4_set_option,