These data structures are never modified so it seems logical for them
to be const.
Signed-off-by: Ben Pfaff <blp@nicira.com>
*
* This structure should be treated as opaque by vconn implementations. */
struct vconn {
*
* This structure should be treated as opaque by vconn implementations. */
struct vconn {
- struct vconn_class *class;
+ const struct vconn_class *class;
-void vconn_init(struct vconn *, struct vconn_class *, int connect_status,
+void vconn_init(struct vconn *, const struct vconn_class *, int connect_status,
const char *name, uint32_t allowed_versions);
void vconn_free_data(struct vconn *vconn);
void vconn_set_remote_ip(struct vconn *, ovs_be32 remote_ip);
const char *name, uint32_t allowed_versions);
void vconn_free_data(struct vconn *vconn);
void vconn_set_remote_ip(struct vconn *, ovs_be32 remote_ip);
*
* This structure should be treated as opaque by vconn implementations. */
struct pvconn {
*
* This structure should be treated as opaque by vconn implementations. */
struct pvconn {
- struct pvconn_class *class;
+ const struct pvconn_class *class;
char *name;
uint32_t allowed_versions;
};
char *name;
uint32_t allowed_versions;
};
-void pvconn_init(struct pvconn *pvconn, struct pvconn_class *class,
+void pvconn_init(struct pvconn *pvconn, const struct pvconn_class *class,
const char *name, uint32_t allowed_versions);
static inline void pvconn_assert_class(const struct pvconn *pvconn,
const struct pvconn_class *class)
const char *name, uint32_t allowed_versions);
static inline void pvconn_assert_class(const struct pvconn *pvconn,
const struct pvconn_class *class)
};
/* Active and passive vconn classes. */
};
/* Active and passive vconn classes. */
-extern struct vconn_class tcp_vconn_class;
-extern struct pvconn_class ptcp_pvconn_class;
-extern struct vconn_class unix_vconn_class;
-extern struct pvconn_class punix_pvconn_class;
+extern const struct vconn_class tcp_vconn_class;
+extern const struct pvconn_class ptcp_pvconn_class;
+extern const struct vconn_class unix_vconn_class;
+extern const struct pvconn_class punix_pvconn_class;
-extern struct vconn_class ssl_vconn_class;
-extern struct pvconn_class pssl_pvconn_class;
+extern const struct vconn_class ssl_vconn_class;
+extern const struct pvconn_class pssl_pvconn_class;
#endif
#endif /* vconn-provider.h */
#endif
#endif /* vconn-provider.h */
-static struct vconn_class stream_vconn_class;
+static const struct vconn_class stream_vconn_class;
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(10, 25);
static struct vlog_rate_limit rl = VLOG_RATE_LIMIT_INIT(10, 25);
struct pstream *pstream;
};
struct pstream *pstream;
};
-static struct pvconn_class pstream_pvconn_class;
+static const struct pvconn_class pstream_pvconn_class;
static struct pvconn_pstream *
pvconn_pstream_cast(struct pvconn *pvconn)
static struct pvconn_pstream *
pvconn_pstream_cast(struct pvconn *pvconn)
-static struct vconn_class stream_vconn_class = STREAM_INIT("stream");
-static struct pvconn_class pstream_pvconn_class = PSTREAM_INIT("pstream");
+static const struct vconn_class stream_vconn_class = STREAM_INIT("stream");
+static const struct pvconn_class pstream_pvconn_class = PSTREAM_INIT("pstream");
-struct vconn_class tcp_vconn_class = STREAM_INIT("tcp");
-struct pvconn_class ptcp_pvconn_class = PSTREAM_INIT("ptcp");
+const struct vconn_class tcp_vconn_class = STREAM_INIT("tcp");
+const struct pvconn_class ptcp_pvconn_class = PSTREAM_INIT("ptcp");
-struct vconn_class unix_vconn_class = STREAM_INIT("unix");
-struct pvconn_class punix_pvconn_class = PSTREAM_INIT("punix");
+const struct vconn_class unix_vconn_class = STREAM_INIT("unix");
+const struct pvconn_class punix_pvconn_class = PSTREAM_INIT("punix");
-struct vconn_class ssl_vconn_class = STREAM_INIT("ssl");
-struct pvconn_class pssl_pvconn_class = PSTREAM_INIT("pssl");
+const struct vconn_class ssl_vconn_class = STREAM_INIT("ssl");
+const struct pvconn_class pssl_pvconn_class = PSTREAM_INIT("pssl");
VCS_DISCONNECTED /* Connection failed or connection closed. */
};
VCS_DISCONNECTED /* Connection failed or connection closed. */
};
-static struct vconn_class *vconn_classes[] = {
+static const struct vconn_class *vconn_classes[] = {
&tcp_vconn_class,
&unix_vconn_class,
#ifdef HAVE_OPENSSL
&tcp_vconn_class,
&unix_vconn_class,
#ifdef HAVE_OPENSSL
-static struct pvconn_class *pvconn_classes[] = {
+static const struct pvconn_class *pvconn_classes[] = {
&ptcp_pvconn_class,
&punix_pvconn_class,
#ifdef HAVE_OPENSSL
&ptcp_pvconn_class,
&punix_pvconn_class,
#ifdef HAVE_OPENSSL
size_t i;
for (i = 0; i < ARRAY_SIZE(vconn_classes); i++) {
size_t i;
for (i = 0; i < ARRAY_SIZE(vconn_classes); i++) {
- struct vconn_class *class = vconn_classes[i];
+ const struct vconn_class *class = vconn_classes[i];
ovs_assert(class->name != NULL);
ovs_assert(class->open != NULL);
if (class->close || class->recv || class->send
ovs_assert(class->name != NULL);
ovs_assert(class->open != NULL);
if (class->close || class->recv || class->send
}
for (i = 0; i < ARRAY_SIZE(pvconn_classes); i++) {
}
for (i = 0; i < ARRAY_SIZE(pvconn_classes); i++) {
- struct pvconn_class *class = pvconn_classes[i];
+ const struct pvconn_class *class = pvconn_classes[i];
ovs_assert(class->name != NULL);
ovs_assert(class->listen != NULL);
if (class->close || class->accept || class->wait) {
ovs_assert(class->name != NULL);
ovs_assert(class->listen != NULL);
if (class->close || class->accept || class->wait) {
* 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
-vconn_lookup_class(const char *name, struct vconn_class **classp)
+vconn_lookup_class(const char *name, const struct vconn_class **classp)
size_t i;
for (i = 0; i < ARRAY_SIZE(vconn_classes); i++) {
size_t i;
for (i = 0; i < ARRAY_SIZE(vconn_classes); i++) {
- struct vconn_class *class = vconn_classes[i];
+ const struct vconn_class *class = vconn_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;
int
vconn_verify_name(const char *name)
{
int
vconn_verify_name(const char *name)
{
- struct vconn_class *class;
+ const struct vconn_class *class;
return vconn_lookup_class(name, &class);
}
return vconn_lookup_class(name, &class);
}
vconn_open(const char *name, uint32_t allowed_versions, uint8_t dscp,
struct vconn **vconnp)
{
vconn_open(const char *name, uint32_t allowed_versions, uint8_t dscp,
struct vconn **vconnp)
{
- struct vconn_class *class;
+ const struct vconn_class *class;
struct vconn *vconn;
char *suffix_copy;
int error;
struct vconn *vconn;
char *suffix_copy;
int error;
* 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
-pvconn_lookup_class(const char *name, struct pvconn_class **classp)
+pvconn_lookup_class(const char *name, const struct pvconn_class **classp)
size_t i;
for (i = 0; i < ARRAY_SIZE(pvconn_classes); i++) {
size_t i;
for (i = 0; i < ARRAY_SIZE(pvconn_classes); i++) {
- struct pvconn_class *class = pvconn_classes[i];
+ const struct pvconn_class *class = pvconn_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;
int
pvconn_verify_name(const char *name)
{
int
pvconn_verify_name(const char *name)
{
- struct pvconn_class *class;
+ const struct pvconn_class *class;
return pvconn_lookup_class(name, &class);
}
return pvconn_lookup_class(name, &class);
}
pvconn_open(const char *name, uint32_t allowed_versions, uint8_t dscp,
struct pvconn **pvconnp)
{
pvconn_open(const char *name, uint32_t allowed_versions, uint8_t dscp,
struct pvconn **pvconnp)
{
- struct pvconn_class *class;
+ const struct pvconn_class *class;
struct pvconn *pvconn;
char *suffix_copy;
int error;
struct pvconn *pvconn;
char *suffix_copy;
int error;
*
* The caller retains ownership of 'name'. */
void
*
* The caller retains ownership of 'name'. */
void
-vconn_init(struct vconn *vconn, struct vconn_class *class, int connect_status,
- const char *name, uint32_t allowed_versions)
+vconn_init(struct vconn *vconn, const struct vconn_class *class,
+ int connect_status, const char *name, uint32_t allowed_versions)
{
memset(vconn, 0, sizeof *vconn);
vconn->class = class;
{
memset(vconn, 0, sizeof *vconn);
vconn->class = class;
-pvconn_init(struct pvconn *pvconn, struct pvconn_class *class,
+pvconn_init(struct pvconn *pvconn, const struct pvconn_class *class,
const char *name, uint32_t allowed_versions)
{
pvconn->class = class;
const char *name, uint32_t allowed_versions)
{
pvconn->class = class;