From patchwork Mon Feb 22 23:46:51 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: ben@skyportsystems.com X-Patchwork-Id: 586587 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from archives.nicira.com (archives.nicira.com [96.126.127.54]) by ozlabs.org (Postfix) with ESMTP id A3D19140BEA for ; Tue, 23 Feb 2016 10:48:01 +1100 (AEDT) Authentication-Results: ozlabs.org; dkim=fail reason="signature verification failed" (1024-bit key; unprotected) header.d=skyportsystems.com header.i=@skyportsystems.com header.b=iTeyyhvt; dkim-atps=neutral Received: from archives.nicira.com (localhost [127.0.0.1]) by archives.nicira.com (Postfix) with ESMTP id 3A4DE10910; Mon, 22 Feb 2016 15:47:26 -0800 (PST) X-Original-To: dev@openvswitch.org Delivered-To: dev@openvswitch.org Received: from mx3v3.cudamail.com (mx3.cudamail.com [64.34.241.5]) by archives.nicira.com (Postfix) with ESMTPS id 165D8108EA for ; Mon, 22 Feb 2016 15:47:23 -0800 (PST) Received: from bar6.cudamail.com (localhost [127.0.0.1]) by mx3v3.cudamail.com (Postfix) with ESMTPS id A250316171F for ; Mon, 22 Feb 2016 16:47:22 -0700 (MST) X-ASG-Debug-ID: 1456184842-0b32373df604610001-byXFYA Received: from mx3-pf1.cudamail.com ([192.168.14.2]) by bar6.cudamail.com with ESMTP id hLT42hsTzqER4BjW (version=TLSv1 cipher=DHE-RSA-AES256-SHA bits=256 verify=NO) for ; Mon, 22 Feb 2016 16:47:22 -0700 (MST) X-Barracuda-Envelope-From: ben@skyportsystems.com X-Barracuda-RBL-Trusted-Forwarder: 192.168.14.2 Received: from unknown (HELO mail-pa0-f49.google.com) (209.85.220.49) by mx3-pf1.cudamail.com with ESMTPS (RC4-SHA encrypted); 22 Feb 2016 23:47:14 -0000 Received-SPF: pass (mx3-pf1.cudamail.com: SPF record at _netblocks.google.com designates 209.85.220.49 as permitted sender) X-Barracuda-RBL-Trusted-Forwarder: 209.85.220.49 Received: by mail-pa0-f49.google.com with SMTP id fl4so99127041pad.0 for ; Mon, 22 Feb 2016 15:47:14 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=skyportsystems.com; s=google; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=3PohvDYE2ZzisOGdp382ftNaFA61zFAOF7NF4b222+I=; b=iTeyyhvt1hfroBO7whjwkG06NJ8jUVmlkVVLFoZQbRMIh17MctksXWAQN26Wgo+UvE +VhmnAA4gVh7frAfayPA1bGCvFcB5VUIbSneRXExCNsEya5rZtyZn8bk82jMNnOLycWs KzkgS9O9jAIdxrxRg2QFZfGncNW1ipoB6frlM= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=3PohvDYE2ZzisOGdp382ftNaFA61zFAOF7NF4b222+I=; b=bZ5fzBpVC0rIBsVVOqxPqWdapPtNsDxLxD8DIs9/aJDtUOzrwLn3CoF7mAxP/ScFGi ptXte6heP82EwBS4smp5j55KstUbIRjhuP5AXpYrbg5xxB2KBTID07YMl39SeGkA1K8R 8IAWzql3Pyrtp3R2Ci127i06y+rV8656OY8pLyfUnu3beP18GDCmLWPiq+/1cm0q9jht fvr/gBEG8M38nG951GA/KAL9hxyF6hLQogi8DvNrNJ8QGogNrf1+GEBQ05j8X2IvcbgF aFu31eYrPslSquS+SwIPLxwiwJ1I6IArveI+X1EaNZas0F+Lv/BUreubkKHbthBIWM6t nfMg== X-Gm-Message-State: AG10YOT2IlUyYgb9Enkz+oJ6NOGFi4Oynh3ylsSvQqSLe6sE/SEVJh2ZeKyJQEOYjywnUqw2 X-Received: by 10.66.90.136 with SMTP id bw8mr42132506pab.52.1456184833965; Mon, 22 Feb 2016 15:47:13 -0800 (PST) Received: from Arrow.corp.skyportsystems.com (67-207-112-138.static.wiline.com. [67.207.112.138]) by smtp.gmail.com with ESMTPSA id cq4sm39516565pad.28.2016.02.22.15.47.13 (version=TLS1 cipher=AES128-SHA bits=128/128); Mon, 22 Feb 2016 15:47:13 -0800 (PST) X-CudaMail-Envelope-Sender: ben@skyportsystems.com X-Barracuda-Apparent-Source-IP: 67.207.112.138 From: ben@skyportsystems.com To: dev@openvswitch.org X-CudaMail-MID: CM-V1-221059755 X-CudaMail-DTE: 022216 X-CudaMail-Originating-IP: 209.85.220.49 Date: Mon, 22 Feb 2016 15:46:51 -0800 X-ASG-Orig-Subj: [##CM-V1-221059755##][PATCH 1/9] Move ofp-parse.h to include/openvswitch directory Message-Id: <1456184819-56124-2-git-send-email-ben@skyportsystems.com> X-Mailer: git-send-email 2.5.4 (Apple Git-61) In-Reply-To: <1456184819-56124-1-git-send-email-ben@skyportsystems.com> References: <1456184819-56124-1-git-send-email-ben@skyportsystems.com> X-GBUdb-Analysis: 0, 209.85.220.49, Ugly c=0.385168 p=-0.333333 Source Normal X-MessageSniffer-Rules: 0-0-0-31889-c X-Barracuda-Connect: UNKNOWN[192.168.14.2] X-Barracuda-Start-Time: 1456184842 X-Barracuda-Encrypted: DHE-RSA-AES256-SHA X-Barracuda-URL: https://web.cudamail.com:443/cgi-mod/mark.cgi X-Virus-Scanned: by bsmtpd at cudamail.com X-Barracuda-BRTS-Status: 1 X-Barracuda-Spam-Score: 1.10 X-Barracuda-Spam-Status: No, SCORE=1.10 using per-user scores of TAG_LEVEL=3.5 QUARANTINE_LEVEL=1000.0 KILL_LEVEL=4.0 tests=BSF_RULE7568M, BSF_SC5_MJ1963, DKIM_SIGNED, NO_REAL_NAME, RDNS_NONE X-Barracuda-Spam-Report: Code version 3.2, rules version 3.2.3.27250 Rule breakdown below pts rule name description ---- ---------------------- -------------------------------------------------- 0.00 NO_REAL_NAME From: does not include a real name 0.00 DKIM_SIGNED Domain Keys Identified Mail: message has a signature 0.50 BSF_RULE7568M Custom Rule 7568M 0.10 RDNS_NONE Delivered to trusted network by a host with no rDNS 0.50 BSF_SC5_MJ1963 Custom Rule MJ1963 Cc: Ben Warren Subject: [ovs-dev] [PATCH 1/9] Move ofp-parse.h to include/openvswitch directory X-BeenThere: dev@openvswitch.org X-Mailman-Version: 2.1.16 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dev-bounces@openvswitch.org Sender: "dev" From: Ben Warren Signed-off-by: Ben Warren --- include/openvswitch/automake.mk | 1 + include/openvswitch/ofp-parse.h | 106 +++++++++++++++++++++++++++++++++++++++ lib/automake.mk | 1 - lib/dpctl.c | 2 +- lib/learning-switch.c | 2 +- lib/ofp-actions.c | 2 +- lib/ofp-parse.c | 3 +- lib/ofp-parse.h | 107 ---------------------------------------- ofproto/ofproto-dpif.c | 2 +- tests/test-odp.c | 2 +- utilities/ovs-dpctl.c | 2 +- utilities/ovs-ofctl.c | 2 +- utilities/ovs-testcontroller.c | 2 +- 13 files changed, 116 insertions(+), 118 deletions(-) create mode 100644 include/openvswitch/ofp-parse.h delete mode 100644 lib/ofp-parse.h diff --git a/include/openvswitch/automake.mk b/include/openvswitch/automake.mk index 90a45cb..46416be 100644 --- a/include/openvswitch/automake.mk +++ b/include/openvswitch/automake.mk @@ -2,6 +2,7 @@ openvswitchincludedir = $(includedir)/openvswitch openvswitchinclude_HEADERS = \ include/openvswitch/compiler.h \ include/openvswitch/list.h \ + include/openvswitch/ofp-parse.h \ include/openvswitch/thread.h \ include/openvswitch/token-bucket.h \ include/openvswitch/types.h \ diff --git a/include/openvswitch/ofp-parse.h b/include/openvswitch/ofp-parse.h new file mode 100644 index 0000000..258ec3b --- /dev/null +++ b/include/openvswitch/ofp-parse.h @@ -0,0 +1,106 @@ +/* + * Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc. + * + * 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: + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * 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. + */ + +/* OpenFlow protocol string to flow parser. */ + +#ifndef OPENVSWITCH_OFP_PARSE_H +#define OPENVSWITCH_OFP_PARSE_H 1 + +#include +#include +#include +#include "openvswitch/compiler.h" +#include "openvswitch/types.h" + +struct flow; +struct ofpbuf; +struct ofputil_flow_mod; +struct ofputil_flow_monitor_request; +struct ofputil_flow_stats_request; +struct ofputil_group_mod; +struct ofputil_meter_mod; +struct ofputil_table_mod; +struct ofputil_tlv_table_mod; +struct simap; +enum ofputil_protocol; + +char *parse_ofp_str(struct ofputil_flow_mod *, int command, const char *str_, + enum ofputil_protocol *usable_protocols) + OVS_WARN_UNUSED_RESULT; + +char *parse_ofp_flow_mod_str(struct ofputil_flow_mod *, const char *string, + int command, + enum ofputil_protocol *usable_protocols) + OVS_WARN_UNUSED_RESULT; + +char *parse_ofp_table_mod(struct ofputil_table_mod *, + const char *table_id, const char *flow_miss_handling, + uint32_t *usable_versions) + OVS_WARN_UNUSED_RESULT; + +char *parse_ofp_flow_mod_file(const char *file_name, int command, + struct ofputil_flow_mod **fms, size_t *n_fms, + enum ofputil_protocol *usable_protocols) + OVS_WARN_UNUSED_RESULT; + +char *parse_ofp_flow_stats_request_str(struct ofputil_flow_stats_request *, + bool aggregate, const char *string, + enum ofputil_protocol *usable_protocols) + OVS_WARN_UNUSED_RESULT; + +char *parse_ofp_exact_flow(struct flow *flow, struct flow *mask, const char *s, + const struct simap *portno_names); + +char *parse_ofp_meter_mod_str(struct ofputil_meter_mod *, const char *string, + int command, + enum ofputil_protocol *usable_protocols) + OVS_WARN_UNUSED_RESULT; + +char *parse_flow_monitor_request(struct ofputil_flow_monitor_request *, + const char *, + enum ofputil_protocol *usable_protocols) + OVS_WARN_UNUSED_RESULT; + +char *parse_ofp_group_mod_file(const char *file_name, uint16_t command, + struct ofputil_group_mod **gms, size_t *n_gms, + enum ofputil_protocol *usable_protocols) + OVS_WARN_UNUSED_RESULT; + +char *parse_ofp_group_mod_str(struct ofputil_group_mod *, uint16_t command, + const char *string, + enum ofputil_protocol *usable_protocols) + OVS_WARN_UNUSED_RESULT; + +char *parse_ofp_tlv_table_mod_str(struct ofputil_tlv_table_mod *, + uint16_t command, const char *string, + enum ofputil_protocol *usable_protocols) + OVS_WARN_UNUSED_RESULT; + +char *str_to_u8(const char *str, const char *name, uint8_t *valuep) + OVS_WARN_UNUSED_RESULT; +char *str_to_u16(const char *str, const char *name, uint16_t *valuep) + OVS_WARN_UNUSED_RESULT; +char *str_to_u32(const char *str, uint32_t *valuep) OVS_WARN_UNUSED_RESULT; +char *str_to_u64(const char *str, uint64_t *valuep) OVS_WARN_UNUSED_RESULT; +char *str_to_be64(const char *str, ovs_be64 *valuep) OVS_WARN_UNUSED_RESULT; +char *str_to_mac(const char *str, struct eth_addr *mac) OVS_WARN_UNUSED_RESULT; +char *str_to_ip(const char *str, ovs_be32 *ip) OVS_WARN_UNUSED_RESULT; +char *str_to_connhelper(const char *str, uint16_t *alg) OVS_WARN_UNUSED_RESULT; +char *parse_ofp_table_vacancy(struct ofputil_table_mod *, + const char *flow_miss_handling) + OVS_WARN_UNUSED_RESULT; + +#endif /* ofp-parse.h */ diff --git a/lib/automake.mk b/lib/automake.mk index 27a1669..ea2f898 100644 --- a/lib/automake.mk +++ b/lib/automake.mk @@ -147,7 +147,6 @@ lib_libopenvswitch_la_SOURCES = \ lib/ofp-msgs.c \ lib/ofp-msgs.h \ lib/ofp-parse.c \ - lib/ofp-parse.h \ lib/ofp-print.c \ lib/ofp-print.h \ lib/ofp-prop.c \ diff --git a/lib/dpctl.c b/lib/dpctl.c index d58df0d..3292713 100644 --- a/lib/dpctl.c +++ b/lib/dpctl.c @@ -39,7 +39,6 @@ #include "netdev-dpdk.h" #include "netlink.h" #include "odp-util.h" -#include "ofp-parse.h" #include "ofpbuf.h" #include "ovs-numa.h" #include "packets.h" @@ -50,6 +49,7 @@ #include "timeval.h" #include "unixctl.h" #include "util.h" +#include "openvswitch/ofp-parse.h" typedef int dpctl_command_handler(int argc, const char *argv[], struct dpctl_params *); diff --git a/lib/learning-switch.c b/lib/learning-switch.c index 19a90db..c6103cf 100644 --- a/lib/learning-switch.c +++ b/lib/learning-switch.c @@ -33,7 +33,6 @@ #include "ofp-actions.h" #include "ofp-errors.h" #include "ofp-msgs.h" -#include "ofp-parse.h" #include "ofp-print.h" #include "ofp-util.h" #include "openflow/openflow.h" @@ -42,6 +41,7 @@ #include "shash.h" #include "simap.h" #include "timeval.h" +#include "openvswitch/ofp-parse.h" #include "openvswitch/vconn.h" #include "openvswitch/vlog.h" diff --git a/lib/ofp-actions.c b/lib/ofp-actions.c index ae961f6..e33bfb2 100644 --- a/lib/ofp-actions.c +++ b/lib/ofp-actions.c @@ -29,12 +29,12 @@ #include "multipath.h" #include "nx-match.h" #include "odp-netlink.h" -#include "ofp-parse.h" #include "ofp-prop.h" #include "ofp-util.h" #include "ofpbuf.h" #include "unaligned.h" #include "util.h" +#include "openvswitch/ofp-parse.h" #include "openvswitch/vlog.h" VLOG_DEFINE_THIS_MODULE(ofp_actions); diff --git a/lib/ofp-parse.c b/lib/ofp-parse.c index 5ef3892..ab52674 100644 --- a/lib/ofp-parse.c +++ b/lib/ofp-parse.c @@ -16,8 +16,6 @@ #include -#include "ofp-parse.h" - #include #include #include @@ -38,6 +36,7 @@ #include "packets.h" #include "simap.h" #include "socket-util.h" +#include "openvswitch/ofp-parse.h" #include "openvswitch/vconn.h" /* Parses 'str' as an 8-bit unsigned integer into '*valuep'. diff --git a/lib/ofp-parse.h b/lib/ofp-parse.h deleted file mode 100644 index a1c147b..0000000 --- a/lib/ofp-parse.h +++ /dev/null @@ -1,107 +0,0 @@ -/* - * Copyright (c) 2010, 2011, 2012, 2013, 2014, 2015 Nicira, Inc. - * - * 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: - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * 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. - */ - -/* OpenFlow protocol string to flow parser. */ - -#ifndef OFP_PARSE_H -#define OFP_PARSE_H 1 - -#include -#include -#include -#include "compiler.h" -#include "openvswitch/types.h" -#include "packets.h" - -struct flow; -struct ofpbuf; -struct ofputil_flow_mod; -struct ofputil_flow_monitor_request; -struct ofputil_flow_stats_request; -struct ofputil_group_mod; -struct ofputil_meter_mod; -struct ofputil_table_mod; -struct ofputil_tlv_table_mod; -struct simap; -enum ofputil_protocol; - -char *parse_ofp_str(struct ofputil_flow_mod *, int command, const char *str_, - enum ofputil_protocol *usable_protocols) - OVS_WARN_UNUSED_RESULT; - -char *parse_ofp_flow_mod_str(struct ofputil_flow_mod *, const char *string, - int command, - enum ofputil_protocol *usable_protocols) - OVS_WARN_UNUSED_RESULT; - -char *parse_ofp_table_mod(struct ofputil_table_mod *, - const char *table_id, const char *flow_miss_handling, - uint32_t *usable_versions) - OVS_WARN_UNUSED_RESULT; - -char *parse_ofp_flow_mod_file(const char *file_name, int command, - struct ofputil_flow_mod **fms, size_t *n_fms, - enum ofputil_protocol *usable_protocols) - OVS_WARN_UNUSED_RESULT; - -char *parse_ofp_flow_stats_request_str(struct ofputil_flow_stats_request *, - bool aggregate, const char *string, - enum ofputil_protocol *usable_protocols) - OVS_WARN_UNUSED_RESULT; - -char *parse_ofp_exact_flow(struct flow *flow, struct flow *mask, const char *s, - const struct simap *portno_names); - -char *parse_ofp_meter_mod_str(struct ofputil_meter_mod *, const char *string, - int command, - enum ofputil_protocol *usable_protocols) - OVS_WARN_UNUSED_RESULT; - -char *parse_flow_monitor_request(struct ofputil_flow_monitor_request *, - const char *, - enum ofputil_protocol *usable_protocols) - OVS_WARN_UNUSED_RESULT; - -char *parse_ofp_group_mod_file(const char *file_name, uint16_t command, - struct ofputil_group_mod **gms, size_t *n_gms, - enum ofputil_protocol *usable_protocols) - OVS_WARN_UNUSED_RESULT; - -char *parse_ofp_group_mod_str(struct ofputil_group_mod *, uint16_t command, - const char *string, - enum ofputil_protocol *usable_protocols) - OVS_WARN_UNUSED_RESULT; - -char *parse_ofp_tlv_table_mod_str(struct ofputil_tlv_table_mod *, - uint16_t command, const char *string, - enum ofputil_protocol *usable_protocols) - OVS_WARN_UNUSED_RESULT; - -char *str_to_u8(const char *str, const char *name, uint8_t *valuep) - OVS_WARN_UNUSED_RESULT; -char *str_to_u16(const char *str, const char *name, uint16_t *valuep) - OVS_WARN_UNUSED_RESULT; -char *str_to_u32(const char *str, uint32_t *valuep) OVS_WARN_UNUSED_RESULT; -char *str_to_u64(const char *str, uint64_t *valuep) OVS_WARN_UNUSED_RESULT; -char *str_to_be64(const char *str, ovs_be64 *valuep) OVS_WARN_UNUSED_RESULT; -char *str_to_mac(const char *str, struct eth_addr *mac) OVS_WARN_UNUSED_RESULT; -char *str_to_ip(const char *str, ovs_be32 *ip) OVS_WARN_UNUSED_RESULT; -char *str_to_connhelper(const char *str, uint16_t *alg) OVS_WARN_UNUSED_RESULT; -char *parse_ofp_table_vacancy(struct ofputil_table_mod *, - const char *flow_miss_handling) - OVS_WARN_UNUSED_RESULT; - -#endif /* ofp-parse.h */ diff --git a/ofproto/ofproto-dpif.c b/ofproto/ofproto-dpif.c index b963ff2..6f98fed 100644 --- a/ofproto/ofproto-dpif.c +++ b/ofproto/ofproto-dpif.c @@ -50,7 +50,6 @@ #include "ofp-util.h" #include "ofpbuf.h" #include "ofp-actions.h" -#include "ofp-parse.h" #include "ofp-print.h" #include "ofproto-dpif-ipfix.h" #include "ofproto-dpif-mirror.h" @@ -70,6 +69,7 @@ #include "unaligned.h" #include "unixctl.h" #include "vlan-bitmap.h" +#include "openvswitch/ofp-parse.h" #include "openvswitch/vlog.h" VLOG_DEFINE_THIS_MODULE(ofproto_dpif); diff --git a/tests/test-odp.c b/tests/test-odp.c index 8565ab6..5225535 100644 --- a/tests/test-odp.c +++ b/tests/test-odp.c @@ -21,10 +21,10 @@ #include "dynamic-string.h" #include "flow.h" #include "match.h" -#include "ofp-parse.h" #include "ofpbuf.h" #include "ovstest.h" #include "util.h" +#include "openvswitch/ofp-parse.h" #include "openvswitch/vlog.h" static int diff --git a/utilities/ovs-dpctl.c b/utilities/ovs-dpctl.c index 89a5a60..ba7fb8e 100644 --- a/utilities/ovs-dpctl.c +++ b/utilities/ovs-dpctl.c @@ -36,10 +36,10 @@ #include "dpctl.h" #include "fatal-signal.h" #include "odp-util.h" -#include "ofp-parse.h" #include "packets.h" #include "timeval.h" #include "util.h" +#include "openvswitch/ofp-parse.h" #include "openvswitch/vlog.h" static struct dpctl_params dpctl_p; diff --git a/utilities/ovs-ofctl.c b/utilities/ovs-ofctl.c index c1876fd..1794177 100644 --- a/utilities/ovs-ofctl.c +++ b/utilities/ovs-ofctl.c @@ -42,7 +42,6 @@ #include "ofp-actions.h" #include "ofp-errors.h" #include "ofp-msgs.h" -#include "ofp-parse.h" #include "ofp-print.h" #include "ofp-util.h" #include "ofp-version-opt.h" @@ -60,6 +59,7 @@ #include "timeval.h" #include "unixctl.h" #include "util.h" +#include "openvswitch/ofp-parse.h" #include "openvswitch/vconn.h" #include "openvswitch/vlog.h" #include "meta-flow.h" diff --git a/utilities/ovs-testcontroller.c b/utilities/ovs-testcontroller.c index 60cc32f..550c331 100644 --- a/utilities/ovs-testcontroller.c +++ b/utilities/ovs-testcontroller.c @@ -29,7 +29,6 @@ #include "daemon.h" #include "fatal-signal.h" #include "learning-switch.h" -#include "ofp-parse.h" #include "ofp-version-opt.h" #include "ofpbuf.h" #include "openflow/openflow.h" @@ -40,6 +39,7 @@ #include "timeval.h" #include "unixctl.h" #include "util.h" +#include "openvswitch/ofp-parse.h" #include "openvswitch/vconn.h" #include "openvswitch/vlog.h" #include "socket-util.h"