datapath: Get rid of query operations for single flows.
[openvswitch] / lib / cfg.c
index b4d1d591a74e8e6188881577dc60fb1c949e0fa5..901315ed99cd83d0f8b333a7e8e03247734f66c8 100644 (file)
--- a/lib/cfg.c
+++ b/lib/cfg.c
@@ -1,27 +1,16 @@
 /* Copyright (c) 2008, 2009 Nicira Networks
- * 
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 3 of the License, or
- * (at your option) any later version.
  *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at:
  *
- * You should have received a copy of the GNU General Public License
- * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ *     http://www.apache.org/licenses/LICENSE-2.0
  *
- * In addition, as a special exception, Nicira Networks gives permission
- * to link the code of its release of vswitchd with the OpenSSL project's
- * "OpenSSL" library (or with modified versions of it that use the same
- * license as the "OpenSSL" library), and distribute the linked
- * executables.  You must obey the GNU General Public License in all
- * respects for all of the code used other than "OpenSSL".  If you modify
- * this file, you may extend this exception to your version of the file,
- * but you are not obligated to do so.  If you do not wish to do so,
- * delete this exception statement from your version.
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
  */
 
 #include <config.h>
@@ -154,22 +143,15 @@ cfg_set_file(const char *file_name)
 static int
 update_cookie(void)
 {
+    struct sha1_ctx context;
     int i;
-    SHA1Context context;
 
-    if (SHA1Reset(&context) != shaSuccess) {
-        return -1;
-    }
+    sha1_init(&context);
     for (i = 0; i < cfg.n; i++) {
-        if (SHA1Input(&context, (uint8_t *)cfg.names[i], 
-                    strlen(cfg.names[i])) != shaSuccess) {
-            return -1;
-        }
-        SHA1Input(&context, (uint8_t *)"\n", 1);
-    }
-    if (SHA1Result(&context, cfg_cookie) != shaSuccess) {
-        return -1;
+        sha1_update(&context, cfg.names[i], strlen(cfg.names[i]));
+        sha1_update(&context, "\n", 1);
     }
+    sha1_final(&context, cfg_cookie);
 
     return 0;
 }
@@ -350,13 +332,16 @@ try_lock(int fd, bool block)
 int
 cfg_lock(uint8_t *cookie, int timeout)
 {
-    long long int start = time_msec();
+    long long int start;
     long long int elapsed = 0;
     int fd;
     uint8_t curr_cookie[CFG_COOKIE_LEN];
 
     assert(lock_fd < 0);
     COVERAGE_INC(cfg_lock);
+
+    time_refresh();
+    start = time_msec();
     for (;;) {
         int error;