__u32 seq; /* message seq# for this session */
__u32 type; /* message type */
struct ceph_entity_inst src, dst;
- __u16 front_len;
- __u16 data_off; /* sender: include full offset; receiver: mask against PAGE_MASK */
+ __u32 front_len;
+ __u32 data_off; /* sender: include full offset; receiver: mask against PAGE_MASK */
__u32 data_len; /* bytes of data payload */
-};
+} __attribute__ ((packed));
/*
to->type = cpu_to_le32(from->type);
ceph_encode_inst(&to->src, &from->src);
ceph_encode_inst(&to->dst, &from->dst);
- to->front_len = cpu_to_le16(from->front_len);
- to->data_off = cpu_to_le16(from->data_off);
- to->data_len = cpu_to_le16(from->data_len);
+ to->front_len = cpu_to_le32(from->front_len);
+ to->data_off = cpu_to_le32(from->data_off);
+ to->data_len = cpu_to_le32(from->data_len);
}
static __inline__ void ceph_decode_header(struct ceph_msg_header *to)
{
to->type = cpu_to_le32(to->type);
ceph_decode_inst(&to->src);
ceph_decode_inst(&to->dst);
- to->front_len = cpu_to_le16(to->front_len);
- to->data_off = cpu_to_le16(to->data_off);
- to->data_len = cpu_to_le16(to->data_len);
+ to->front_len = cpu_to_le32(to->front_len);
+ to->data_off = cpu_to_le32(to->data_off);
+ to->data_len = cpu_to_le32(to->data_len);
}
#include <sys/socket.h>
#include <netinet/tcp.h>
-#include <asm/page.h>
+#include <sys/user.h>
#include "config.h"
sockaddr_in listen_addr = g_my_addr.v.ipaddr;
/* socket creation */
- listen_sd = socket(AF_INET, SOCK_STREAM, 0);
+ listen_sd = ::socket(AF_INET, SOCK_STREAM, 0);
assert(listen_sd > 0);
+
+ int on = 1;
+ ::setsockopt(listen_sd, SOL_SOCKET, SO_REUSEADDR, &on, sizeof(on));
/* bind to port */
int rc = ::bind(listen_sd, (struct sockaddr *) &listen_addr, sizeof(listen_addr));