log_debug("Bind received port=%u (network order)\n", mptp_addr->dests[0].port);
port = ntohs(mptp_addr->dests[0].port);
+ if (port == 0)
+ port = get_next_free_port();
if (unlikely(port == 0 || port >= MAX_MPTP_PORT)) {
log_error("Invalid value for sockaddr port (%u)\n", port);
if (likely(!err)) {
log_debug("Sent %u bytes on wire\n", len);
ret += len;
- } else
+ dest->bytes = len;
+ } else {
log_error("ip_queue_xmit failed\n");
+ dest->bytes = -1;
+ }
}
return ret;
int err, copied;
int i;
struct sockaddr_mptp *ret_addr = (struct sockaddr_mptp *) msg->msg_name;
+ ret_addr->count = 0;
log_debug("Trying to receive sock=%p sk=%p flags=%d\n", sock, sk, flags);
goto out_free;
}
log_debug("Received %d bytes\n", copied);
+ msg->msg_iov[i].iov_len = copied;
sock_recv_ts_and_drops(msg, sk, skb);