[ovs-dev] [PATCH] ofproto: Add const to immutable members of ofgroup.

Ryan Wilson 76511 wryan at vmware.com
Thu May 22 04:56:38 UTC 2014


Thanks for this, Andy!

Acked-by: Ryan Wilson <wryan at nicira.com>
________________________________________
From: dev <dev-bounces at openvswitch.org> on behalf of Andy Zhou <azhou at nicira.com>
Sent: Wednesday, May 21, 2014 9:47 PM
To: dev at openvswitch.com
Subject: [ovs-dev] [PATCH] ofproto: Add const to immutable members of   ofgroup.

Signed-off-by: Andy Zhou <azhou at nicira.com>
---
 ofproto/ofproto-provider.h | 12 ++++++------
 ofproto/ofproto.c          | 21 ++++++++++++---------
 2 files changed, 18 insertions(+), 15 deletions(-)

diff --git a/ofproto/ofproto-provider.h b/ofproto/ofproto-provider.h
index e5f71c7..9f87ba9 100644
--- a/ofproto/ofproto-provider.h
+++ b/ofproto/ofproto-provider.h
@@ -489,15 +489,15 @@ struct ofgroup {

     /* No lock is needed to protect the fields below since they are not
      * modified after construction. */
-    struct ofproto *ofproto;   /* The ofproto that contains this group. */
-    uint32_t group_id;
-    enum ofp11_group_type type; /* One of OFPGT_*. */
+    const struct ofproto *ofproto;  /* The ofproto that contains this group. */
+    const uint32_t group_id;
+    const enum ofp11_group_type type; /* One of OFPGT_*. */

-    long long int created;      /* Creation time. */
-    long long int modified;     /* Time of last modification. */
+    const long long int created;      /* Creation time. */
+    const long long int modified;     /* Time of last modification. */

     struct list buckets;        /* Contains "struct ofputil_bucket"s. */
-    uint32_t n_buckets;
+    const uint32_t n_buckets;
 };

 bool ofproto_group_lookup(const struct ofproto *ofproto, uint32_t group_id,
diff --git a/ofproto/ofproto.c b/ofproto/ofproto.c
index 7fd4ac1..7952984 100644
--- a/ofproto/ofproto.c
+++ b/ofproto/ofproto.c
@@ -5420,7 +5420,7 @@ static uint32_t
 group_get_ref_count(struct ofgroup *group)
     OVS_EXCLUDED(ofproto_mutex)
 {
-    struct ofproto *ofproto = group->ofproto;
+    struct ofproto *ofproto = CONST_CAST(struct ofproto *, group->ofproto);
     struct rule_criteria criteria;
     struct rule_collection rules;
     struct match match;
@@ -5445,7 +5445,7 @@ static void
 append_group_stats(struct ofgroup *group, struct list *replies)
 {
     struct ofputil_group_stats ogs;
-    struct ofproto *ofproto = group->ofproto;
+    const struct ofproto *ofproto = group->ofproto;
     long long int now = time_msec();
     int error;

@@ -5597,6 +5597,7 @@ init_group(struct ofproto *ofproto, struct ofputil_group_mod *gm,
            struct ofgroup **ofgroup)
 {
     enum ofperr error;
+    const long long int now = time_msec();

     if (gm->group_id > OFPG_MAX) {
         return OFPERR_OFPGMFC_INVALID_GROUP;
@@ -5611,14 +5612,16 @@ init_group(struct ofproto *ofproto, struct ofputil_group_mod *gm,
         return OFPERR_OFPGMFC_OUT_OF_GROUPS;
     }

-    (*ofgroup)->ofproto  = ofproto;
-    (*ofgroup)->group_id = gm->group_id;
-    (*ofgroup)->type     = gm->type;
-    (*ofgroup)->created = (*ofgroup)->modified = time_msec();
+    (*ofgroup)->ofproto = ofproto;
+    *CONST_CAST(uint32_t *, &((*ofgroup)->group_id)) = gm->group_id;
+    *CONST_CAST(enum ofp11_group_type *, &(*ofgroup)->type) = gm->type;
+    *CONST_CAST(long long int *, &((*ofgroup)->created)) = now;
+    *CONST_CAST(long long int *, &((*ofgroup)->modified)) = now;
     ovs_refcount_init(&(*ofgroup)->ref_count);

     list_move(&(*ofgroup)->buckets, &gm->buckets);
-    (*ofgroup)->n_buckets = list_size(&(*ofgroup)->buckets);
+    *CONST_CAST(uint32_t *, &(*ofgroup)->n_buckets) =
+        list_size(&(*ofgroup)->buckets);

     /* Construct called BEFORE any locks are held. */
     error = ofproto->ofproto_class->group_construct(*ofgroup);
@@ -5722,8 +5725,8 @@ modify_group(struct ofproto *ofproto, struct ofputil_group_mod *gm)
     }

     /* The group creation time does not change during modification. */
-    new_ofgroup->created = ofgroup->created;
-    new_ofgroup->modified = time_msec();
+    *CONST_CAST(long long int *, &(new_ofgroup->created)) = ofgroup->created;
+    *CONST_CAST(long long int *, &(new_ofgroup->modified)) = time_msec();

     error = ofproto->ofproto_class->group_modify(new_ofgroup);
     if (error) {
--
1.9.1

_______________________________________________
dev mailing list
dev at openvswitch.org
https://urldefense.proofpoint.com/v1/url?u=http://openvswitch.org/mailman/listinfo/dev&k=oIvRg1%2BdGAgOoM1BIlLLqw%3D%3D%0A&r=TfBS78Vw3dzttvXidhbffg%3D%3D%0A&m=pm3O8fVsg71T%2FXIZoLca6BG0pt29abFhUdGZf%2BR2ewM%3D%0A&s=c538f3b1421a435dd9ac958f0b154c041429041217db3dd699a82f337208005d



More information about the dev mailing list