Hello. On 6/22/2016 7:11 PM, ggar...@abra.uab.cat wrote:
From: Gerard Garcia <ggar...@deic.uab.cat> Signed-off-by: Gerard Garcia <ggar...@deic.uab.cat> --- drivers/vhost/vsock.c | 73 +++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 73 insertions(+) diff --git a/drivers/vhost/vsock.c b/drivers/vhost/vsock.c index 17bfe4e..e8621cc 100644 --- a/drivers/vhost/vsock.c +++ b/drivers/vhost/vsock.c
[...]
@@ -45,6 +47,69 @@ struct vhost_vsock { u32 guest_cid; }; +static struct sk_buff * +virtio_vsock_pkt_to_skb(struct virtio_vsock_pkt *pkt) +{ + struct sk_buff *skb; + struct af_vsockmon_hdr *hdr; + void *payload; + + u32 skb_len = sizeof(struct af_vsockmon_hdr) + pkt->len; + + skb = alloc_skb(skb_len, GFP_ATOMIC); + if (!skb) + return NULL; + + skb_reserve(skb, sizeof(struct af_vsockmon_hdr)); + + if (pkt->len) { + payload = skb_put(skb, pkt->len); + memcpy(payload, pkt->buf, pkt->len); + } + + hdr = (struct af_vsockmon_hdr *) skb_push(skb, sizeof(*hdr)); + + hdr->src_cid = pkt->hdr.src_cid; + hdr->src_port = pkt->hdr.src_port; + hdr->dst_cid = pkt->hdr.dst_cid; + hdr->dst_port = pkt->hdr.dst_port; + hdr->t = AF_VSOCK_T_VIRTIO; + + switch(pkt->hdr.op) { + case VIRTIO_VSOCK_OP_REQUEST: + case VIRTIO_VSOCK_OP_RESPONSE: + hdr->op = AF_VSOCK_OP_CONNECT; + break; + case VIRTIO_VSOCK_OP_RST: + case VIRTIO_VSOCK_OP_SHUTDOWN: + hdr->op = AF_VSOCK_OP_DISCONNECT; + break; + case VIRTIO_VSOCK_OP_RW: + hdr->op = AF_VSOCK_OP_PAYLOAD; + break; + case VIRTIO_VSOCK_OP_CREDIT_UPDATE: + case VIRTIO_VSOCK_OP_CREDIT_REQUEST: + hdr->op = AF_VSOCK_OP_CONTROL; + break; + default: + hdr->op = AF_VSOCK_OP_UNKNOWN; + break; + }
CodingStyle: *switch* and *case* should be at the same indentation level. [...] MBR, Sergei