X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=lib%2Fvconn-unix.c;h=b1a7d8a75ef77fc153cb34680d056ee8358dab20;hb=refs%2Fheads%2Ffor-nox%2F0.4;hp=e84674ff8e235a32ef55e1e9937c1411b1724cec;hpb=c5e61793e9e1f5e4cd24d6abd444e521408c8ee7;p=sliver-openvswitch.git diff --git a/lib/vconn-unix.c b/lib/vconn-unix.c index e84674ff8..b1a7d8a75 100644 --- a/lib/vconn-unix.c +++ b/lib/vconn-unix.c @@ -44,7 +44,7 @@ #include #include #include "ofpbuf.h" -#include "openflow.h" +#include "openflow/openflow.h" #include "packets.h" #include "poll-loop.h" #include "socket-util.h" @@ -85,7 +85,6 @@ struct vconn_class unix_vconn_class = { unix_open, /* open */ NULL, /* close */ NULL, /* connect */ - NULL, /* accept */ NULL, /* recv */ NULL, /* send */ NULL, /* wait */ @@ -97,7 +96,7 @@ static int punix_accept(int fd, const struct sockaddr *sa, size_t sa_len, struct vconn **vconnp); static int -punix_open(const char *name, char *suffix, struct vconn **vconnp) +punix_open(const char *name, char *suffix, struct pvconn **pvconnp) { int fd; @@ -107,7 +106,7 @@ punix_open(const char *name, char *suffix, struct vconn **vconnp) return errno; } - return new_pstream_vconn("punix", fd, punix_accept, vconnp); + return new_pstream_pvconn("punix", fd, punix_accept, pvconnp); } static int @@ -115,26 +114,19 @@ punix_accept(int fd, const struct sockaddr *sa, size_t sa_len, struct vconn **vconnp) { const struct sockaddr_un *sun = (const struct sockaddr_un *) sa; + int name_len = get_unix_name_len(sa_len); char name[128]; - if (sa_len >= offsetof(struct sockaddr_un, sun_path)) { - snprintf(name, sizeof name, "unix:%.*s", - (int) (sa_len - offsetof(struct sockaddr_un, sun_path)), - sun->sun_path); + if (name_len > 0) { + snprintf(name, sizeof name, "unix:%.*s", name_len, sun->sun_path); } else { strcpy(name, "unix"); } return new_stream_vconn(name, fd, 0, 0, vconnp); } -struct vconn_class punix_vconn_class = { - "punix", /* name */ - punix_open, /* open */ - NULL, /* close */ - NULL, /* connect */ - NULL, /* accept */ - NULL, /* recv */ - NULL, /* send */ - NULL, /* wait */ +struct pvconn_class punix_pvconn_class = { + "punix", + punix_open, };