Signed-off-by: Michael Roth <mdr...@linux.vnet.ibm.com> --- virtproxy.c | 23 +++++++++++++++++++++++ 1 files changed, 23 insertions(+), 0 deletions(-)
diff --git a/virtproxy.c b/virtproxy.c index 0cc8950..01a36c2 100644 --- a/virtproxy.c +++ b/virtproxy.c @@ -464,6 +464,29 @@ static int vp_handle_data_packet(void *drv, const VPPacket *pkt) return 0; } +static inline int vp_handle_packet(VPDriver *drv, const VPPacket *pkt) +{ + int ret; + + TRACE("called with drv: %p", drv); + + if (pkt->magic != VP_MAGIC) { + LOG("invalid packet magic field"); + return -1; + } + + if (pkt->type == VP_PKT_CONTROL) { + ret = vp_handle_control_packet(drv, pkt); + } else if (pkt->type == VP_PKT_CLIENT || pkt->type == VP_PKT_SERVER) { + ret = vp_handle_data_packet(drv, pkt); + } else { + LOG("invalid packet type"); + return -1; + } + + return ret; +} + /* process a stream of packets coming in from the channel */ int vp_handle_packet_buf(VPDriver *drv, const void *buf, int count) { -- 1.7.0.4