X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=lib%2Fvconn.c;h=f493f8337769971ff81f8686193f2a6cd8f3a420;hb=3c303e5fe1061b8715be018ae8e535cbc24303c9;hp=a006efbea7f8290c3860ae913bd3411f6604569e;hpb=a14bc59fb8f27db193d74662dc9c5cb8237177ef;p=openvswitch diff --git a/lib/vconn.c b/lib/vconn.c index a006efbe..f493f833 100644 --- a/lib/vconn.c +++ b/lib/vconn.c @@ -251,9 +251,34 @@ vconn_get_name(const struct vconn *vconn) /* Returns the IP address of the peer, or 0 if the peer is not connected over * an IP-based protocol or if its IP address is not yet known. */ uint32_t -vconn_get_ip(const struct vconn *vconn) +vconn_get_remote_ip(const struct vconn *vconn) { - return vconn->ip; + return vconn->remote_ip; +} + +/* Returns the transport port of the peer, or 0 if the connection does not + * contain a port or if the port is not yet known. */ +uint16_t +vconn_get_remote_port(const struct vconn *vconn) +{ + return vconn->remote_port; +} + +/* Returns the IP address used to connect to the peer, or 0 if the + * connection is not an IP-based protocol or if its IP address is not + * yet known. */ +uint32_t +vconn_get_local_ip(const struct vconn *vconn) +{ + return vconn->local_ip; +} + +/* Returns the transport port used to connect to the peer, or 0 if the + * connection does not contain a port or if the port is not yet known. */ +uint16_t +vconn_get_local_port(const struct vconn *vconn) +{ + return vconn->local_port; } static void @@ -1382,7 +1407,7 @@ normalize_match(struct ofp_match *m) void vconn_init(struct vconn *vconn, struct vconn_class *class, int connect_status, - uint32_t ip, const char *name, bool reconnectable) + const char *name, bool reconnectable) { vconn->class = class; vconn->state = (connect_status == EAGAIN ? VCS_CONNECTING @@ -1391,11 +1416,38 @@ vconn_init(struct vconn *vconn, struct vconn_class *class, int connect_status, vconn->error = connect_status; vconn->version = -1; vconn->min_version = -1; - vconn->ip = ip; + vconn->remote_ip = 0; + vconn->remote_port = 0; + vconn->local_ip = 0; + vconn->local_port = 0; vconn->name = xstrdup(name); vconn->reconnectable = reconnectable; } +void +vconn_set_remote_ip(struct vconn *vconn, uint32_t ip) +{ + vconn->remote_ip = ip; +} + +void +vconn_set_remote_port(struct vconn *vconn, uint16_t port) +{ + vconn->remote_port = port; +} + +void +vconn_set_local_ip(struct vconn *vconn, uint32_t ip) +{ + vconn->local_ip = ip; +} + +void +vconn_set_local_port(struct vconn *vconn, uint16_t port) +{ + vconn->local_port = port; +} + void pvconn_init(struct pvconn *pvconn, struct pvconn_class *class, const char *name)