projects
/
openvswitch
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
lacp: Sort slaves in appctl output.
[openvswitch]
/
lib
/
stream.c
diff --git
a/lib/stream.c
b/lib/stream.c
index ac0cdb8f376656e70c08329f0db5b9a3557e58cd..9ba4c518425232054a541c432ee96092a333ba78 100644
(file)
--- a/
lib/stream.c
+++ b/
lib/stream.c
@@
-1,5
+1,5
@@
/*
/*
- * Copyright (c) 2008, 2009, 2010 Nicira Networks.
+ * Copyright (c) 2008, 2009, 2010
, 2011
Nicira Networks.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
@@
-37,7
+37,10
@@
#include "util.h"
#include "vlog.h"
#include "util.h"
#include "vlog.h"
-VLOG_DEFINE_THIS_MODULE(stream)
+VLOG_DEFINE_THIS_MODULE(stream);
+
+COVERAGE_DEFINE(pstream_open);
+COVERAGE_DEFINE(stream_open);
/* State of an active stream.*/
enum stream_state {
/* State of an active stream.*/
enum stream_state {
@@
-46,7
+49,7
@@
enum stream_state {
SCS_DISCONNECTED /* Connection failed or connection closed. */
};
SCS_DISCONNECTED /* Connection failed or connection closed. */
};
-static struct stream_class *stream_classes[] = {
+static
const
struct stream_class *stream_classes[] = {
&tcp_stream_class,
&unix_stream_class,
#ifdef HAVE_OPENSSL
&tcp_stream_class,
&unix_stream_class,
#ifdef HAVE_OPENSSL
@@
-54,7
+57,7
@@
static struct stream_class *stream_classes[] = {
#endif
};
#endif
};
-static struct pstream_class *pstream_classes[] = {
+static
const
struct pstream_class *pstream_classes[] = {
&ptcp_pstream_class,
&punix_pstream_class,
#ifdef HAVE_OPENSSL
&ptcp_pstream_class,
&punix_pstream_class,
#ifdef HAVE_OPENSSL
@@
-70,7
+73,7
@@
check_stream_classes(void)
size_t i;
for (i = 0; i < ARRAY_SIZE(stream_classes); i++) {
size_t i;
for (i = 0; i < ARRAY_SIZE(stream_classes); i++) {
- struct stream_class *class = stream_classes[i];
+
const
struct stream_class *class = stream_classes[i];
assert(class->name != NULL);
assert(class->open != NULL);
if (class->close || class->recv || class->send || class->run
assert(class->name != NULL);
assert(class->open != NULL);
if (class->close || class->recv || class->send || class->run
@@
-85,7
+88,7
@@
check_stream_classes(void)
}
for (i = 0; i < ARRAY_SIZE(pstream_classes); i++) {
}
for (i = 0; i < ARRAY_SIZE(pstream_classes); i++) {
- struct pstream_class *class = pstream_classes[i];
+
const
struct pstream_class *class = pstream_classes[i];
assert(class->name != NULL);
assert(class->listen != NULL);
if (class->close || class->accept || class->wait) {
assert(class->name != NULL);
assert(class->listen != NULL);
if (class->close || class->accept || class->wait) {
@@
-151,7
+154,7
@@
stream_usage(const char *name, bool active, bool passive,
* a null pointer into '*classp' if 'name' is in the wrong form or if no such
* class exists. */
static int
* a null pointer into '*classp' if 'name' is in the wrong form or if no such
* class exists. */
static int
-stream_lookup_class(const char *name, struct stream_class **classp)
+stream_lookup_class(const char *name,
const
struct stream_class **classp)
{
size_t prefix_len;
size_t i;
{
size_t prefix_len;
size_t i;
@@
-164,7
+167,7
@@
stream_lookup_class(const char *name, struct stream_class **classp)
return EAFNOSUPPORT;
}
for (i = 0; i < ARRAY_SIZE(stream_classes); i++) {
return EAFNOSUPPORT;
}
for (i = 0; i < ARRAY_SIZE(stream_classes); i++) {
- struct stream_class *class = stream_classes[i];
+
const
struct stream_class *class = stream_classes[i];
if (strlen(class->name) == prefix_len
&& !memcmp(class->name, name, prefix_len)) {
*classp = class;
if (strlen(class->name) == prefix_len
&& !memcmp(class->name, name, prefix_len)) {
*classp = class;
@@
-179,7
+182,7
@@
stream_lookup_class(const char *name, struct stream_class **classp)
int
stream_verify_name(const char *name)
{
int
stream_verify_name(const char *name)
{
- struct stream_class *class;
+
const
struct stream_class *class;
return stream_lookup_class(name, &class);
}
return stream_lookup_class(name, &class);
}
@@
-193,7
+196,7
@@
stream_verify_name(const char *name)
int
stream_open(const char *name, struct stream **streamp)
{
int
stream_open(const char *name, struct stream **streamp)
{
- struct stream_class *class;
+
const
struct stream_class *class;
struct stream *stream;
char *suffix_copy;
int error;
struct stream *stream;
char *suffix_copy;
int error;
@@
-280,7
+283,7
@@
stream_get_name(const struct stream *stream)
/* 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. */
/* 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
+ovs_be32
stream_get_remote_ip(const struct stream *stream)
{
return stream->remote_ip;
stream_get_remote_ip(const struct stream *stream)
{
return stream->remote_ip;
@@
-288,7
+291,7
@@
stream_get_remote_ip(const struct stream *stream)
/* 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. */
/* 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
+ovs_be16
stream_get_remote_port(const struct stream *stream)
{
return stream->remote_port;
stream_get_remote_port(const struct stream *stream)
{
return stream->remote_port;
@@
-296,7
+299,7
@@
stream_get_remote_port(const struct stream *stream)
/* 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. */
/* 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
+ovs_be32
stream_get_local_ip(const struct stream *stream)
{
return stream->local_ip;
stream_get_local_ip(const struct stream *stream)
{
return stream->local_ip;
@@
-304,7
+307,7
@@
stream_get_local_ip(const struct stream *stream)
/* 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. */
/* 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
+ovs_be16
stream_get_local_port(const struct stream *stream)
{
return stream->local_port;
stream_get_local_port(const struct stream *stream)
{
return stream->local_port;
@@
-454,7
+457,7
@@
stream_send_wait(struct stream *stream)
* a null pointer into '*classp' if 'name' is in the wrong form or if no such
* class exists. */
static int
* a null pointer into '*classp' if 'name' is in the wrong form or if no such
* class exists. */
static int
-pstream_lookup_class(const char *name, struct pstream_class **classp)
+pstream_lookup_class(const char *name,
const
struct pstream_class **classp)
{
size_t prefix_len;
size_t i;
{
size_t prefix_len;
size_t i;
@@
-467,7
+470,7
@@
pstream_lookup_class(const char *name, struct pstream_class **classp)
return EAFNOSUPPORT;
}
for (i = 0; i < ARRAY_SIZE(pstream_classes); i++) {
return EAFNOSUPPORT;
}
for (i = 0; i < ARRAY_SIZE(pstream_classes); i++) {
- struct pstream_class *class = pstream_classes[i];
+
const
struct pstream_class *class = pstream_classes[i];
if (strlen(class->name) == prefix_len
&& !memcmp(class->name, name, prefix_len)) {
*classp = class;
if (strlen(class->name) == prefix_len
&& !memcmp(class->name, name, prefix_len)) {
*classp = class;
@@
-482,7
+485,7
@@
pstream_lookup_class(const char *name, struct pstream_class **classp)
int
pstream_verify_name(const char *name)
{
int
pstream_verify_name(const char *name)
{
- struct pstream_class *class;
+
const
struct pstream_class *class;
return pstream_lookup_class(name, &class);
}
return pstream_lookup_class(name, &class);
}
@@
-496,7
+499,7
@@
pstream_verify_name(const char *name)
int
pstream_open(const char *name, struct pstream **pstreamp)
{
int
pstream_open(const char *name, struct pstream **pstreamp)
{
- struct pstream_class *class;
+
const
struct pstream_class *class;
struct pstream *pstream;
char *suffix_copy;
int error;
struct pstream *pstream;
char *suffix_copy;
int error;
@@
-610,9
+613,10
@@
pstream_wait(struct pstream *pstream)
*
* The caller retains ownership of 'name'. */
void
*
* The caller retains ownership of 'name'. */
void
-stream_init(struct stream *stream, struct stream_class *class,
+stream_init(struct stream *stream,
const
struct stream_class *class,
int connect_status, const char *name)
{
int connect_status, const char *name)
{
+ memset(stream, 0, sizeof *stream);
stream->class = class;
stream->state = (connect_status == EAGAIN ? SCS_CONNECTING
: !connect_status ? SCS_CONNECTED
stream->class = class;
stream->state = (connect_status == EAGAIN ? SCS_CONNECTING
: !connect_status ? SCS_CONNECTED
@@
-623,31
+627,31
@@
stream_init(struct stream *stream, struct stream_class *class,
}
void
}
void
-stream_set_remote_ip(struct stream *stream,
uint32_t
ip)
+stream_set_remote_ip(struct stream *stream,
ovs_be32
ip)
{
stream->remote_ip = ip;
}
void
{
stream->remote_ip = ip;
}
void
-stream_set_remote_port(struct stream *stream,
uint16_t
port)
+stream_set_remote_port(struct stream *stream,
ovs_be16
port)
{
stream->remote_port = port;
}
void
{
stream->remote_port = port;
}
void
-stream_set_local_ip(struct stream *stream,
uint32_t
ip)
+stream_set_local_ip(struct stream *stream,
ovs_be32
ip)
{
stream->local_ip = ip;
}
void
{
stream->local_ip = ip;
}
void
-stream_set_local_port(struct stream *stream,
uint16_t
port)
+stream_set_local_port(struct stream *stream,
ovs_be16
port)
{
stream->local_port = port;
}
void
{
stream->local_port = port;
}
void
-pstream_init(struct pstream *pstream, struct pstream_class *class,
+pstream_init(struct pstream *pstream,
const
struct pstream_class *class,
const char *name)
{
pstream->class = class;
const char *name)
{
pstream->class = class;
@@
-724,7
+728,7
@@
pstream_open_with_default_ports(const char *name_,
/* Attempts to guess the content type of a stream whose first few bytes were
* the 'size' bytes of 'data'. */
static enum stream_content_type
/* Attempts to guess the content type of a stream whose first few bytes were
* the 'size' bytes of 'data'. */
static enum stream_content_type
-stream_guess_content(const uint8_t *data, size_t size)
+stream_guess_content(const uint8_t *data, s
s
ize_t size)
{
if (size >= 2) {
#define PAIR(A, B) (((A) << 8) | (B))
{
if (size >= 2) {
#define PAIR(A, B) (((A) << 8) | (B))
@@
-767,7
+771,7
@@
stream_content_type_to_string(enum stream_content_type type)
* module 'module', naming 'stream_name' as the source, explaining what
* content was expected and what was actually received. */
void
* module 'module', naming 'stream_name' as the source, explaining what
* content was expected and what was actually received. */
void
-stream_report_content(const void *data, size_t size,
+stream_report_content(const void *data, s
s
ize_t size,
enum stream_content_type expected_type,
struct vlog_module *module, const char *stream_name)
{
enum stream_content_type expected_type,
struct vlog_module *module, const char *stream_name)
{
@@
-779,7
+783,7
@@
stream_report_content(const void *data, size_t size,
vlog_rate_limit(module, VLL_WARN, &rl,
"%s: received %s data on %s channel",
stream_name,
vlog_rate_limit(module, VLL_WARN, &rl,
"%s: received %s data on %s channel",
stream_name,
- stream_content_type_to_string(
expected
_type),
- stream_content_type_to_string(
actual
_type));
+ stream_content_type_to_string(
actual
_type),
+ stream_content_type_to_string(
expected
_type));
}
}
}
}