aboutsummaryrefslogtreecommitdiffstats
path: root/src/vlib/linux
diff options
context:
space:
mode:
authorDamjan Marion <damarion@cisco.com>2018-03-04 16:44:26 +0100
committerFlorin Coras <florin.coras@gmail.com>2018-03-04 18:00:03 +0000
commit44bcc20fcfaa572f500c8acf1b94dda7d3f5151c (patch)
treeb4d3c004084d9f83f4fd12df6a6c4aef21a5a311 /src/vlib/linux
parent7b185360843c2b1cbcbeede64340add8a56fe440 (diff)
vlib: fix vlib_pci_get_device_info on when not running as root
While comment properly says that only first 64 bytes can be read, actual code was returning error instead being happy with 64 bytes received. Change-Id: I09c0d1d5c9fc8e1f6c59c093d81bb1ce1924281b Signed-off-by: Damjan Marion <damarion@cisco.com>
Diffstat (limited to 'src/vlib/linux')
-rw-r--r--src/vlib/linux/pci.c6
1 files changed, 2 insertions, 4 deletions
diff --git a/src/vlib/linux/pci.c b/src/vlib/linux/pci.c
index 8954bccd93f..e67e651d9a8 100644
--- a/src/vlib/linux/pci.c
+++ b/src/vlib/linux/pci.c
@@ -182,10 +182,8 @@ vlib_pci_get_device_info (vlib_pci_addr_t * addr, clib_error_t ** error)
/* You can only read more that 64 bytes of config space as root; so we try to
read the full space but fall back to just the first 64 bytes. */
- if (read (fd, &di->config_data, sizeof (di->config_data)) !=
- sizeof (di->config_data)
- && read (fd, &di->config0,
- sizeof (di->config0)) != sizeof (di->config0))
+ if (read (fd, &di->config_data, sizeof (di->config_data)) <
+ sizeof (di->config0))
{
err = clib_error_return_unix (0, "read `%s'", f);
close (fd);
d class='lines'>
# Copyright (c) 2015 Cisco and/or its affiliates.
# 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.


########################################
# iOAM Proof of Transit
########################################

IOAM_POT_SRC =					\
	ioam/lib-pot/pot_util.c			\
	ioam/encap/ip6_ioam_pot.c		\
	ioam/lib-pot/pot_util.h			\
	ioam/lib-pot/math64.h			\
	ioam/lib-pot/pot_api.c

IOAM_POT_NOINST_HDR =				\
  ioam/lib-pot/pot_all_api_h.h			\
  ioam/lib-pot/pot_msg_enum.h			\
  ioam/lib-pot/pot.api.h			\
  ioam/lib-pot/pot_util.h			\
  ioam/lib-pot/math64.h

IOAM_POT_API = ioam/lib-pot/pot.api

ioam_pot_test_plugin_la_SOURCES =		\
	ioam/lib-pot/pot_test.c			\
	ioam/lib-pot/pot_plugin.api.h

vppapitestplugins_LTLIBRARIES += ioam_pot_test_plugin.la

########################################
# iOAM trace export for IPv6
########################################

IOAM_EXPORT_SRC =		  \
ioam/export/ioam_export.c         \
ioam/export/node.c                \
ioam/export/ioam_export.api.h     \
ioam/export/ioam_export_thread.c

IOAM_EXPORT_NOINST_HDR =                \
  ioam/export/ioam_export_all_api_h.h   \
  ioam/export/ioam_export_msg_enum.h    \
  ioam/export/ioam_export.api.h

IOAM_EXPORT_API = ioam/export/ioam_export.api

ioam_export_test_plugin_la_SOURCES =  \
  ioam/export/ioam_export_test.c      \
  ioam/export/ioam_export_plugin.api.h

vppapitestplugins_LTLIBRARIES += ioam_export_test_plugin.la

########################################
# iOAM Trace
########################################
IOAM_TRACE_SRC =				\
	ioam/lib-trace/trace_util.c		\
	ioam/encap/ip6_ioam_trace.c		\
	ioam/lib-trace/trace_util.h		\
	ioam/lib-trace/trace_api.c

IOAM_TRACE_NOINST_HDR =                 \
  ioam/export/ioam_export_all_api_h.h   \
  ioam/lib-trace/trace_all_api_h.h	\
  ioam/lib-trace/trace_msg_enum.h	\
  ioam/lib-trace/trace.api.h		\
  ioam/lib-trace/trace_util.h

IOAM_TRACE_API = ioam/lib-trace/trace.api

ioam_trace_test_plugin_la_SOURCES =		\
	ioam/lib-trace/trace_test.c		\
	ioam/lib-trace/trace_plugin.api.h

vppapitestplugins_LTLIBRARIES += ioam_trace_test_plugin.la

########################################
# VxLAN-GPE
########################################
IOAM_VXLAN_GPE_SRC =					\
	ioam/lib-vxlan-gpe/ioam_encap.c			\
	ioam/lib-vxlan-gpe/ioam_decap.c			\
	ioam/lib-vxlan-gpe/ioam_transit.c		\
	ioam/lib-vxlan-gpe/ioam_pop.c			\
	ioam/lib-vxlan-gpe/vxlan_gpe_api.c		\
	ioam/lib-vxlan-gpe/vxlan_gpe_ioam_trace.c	\
	ioam/lib-vxlan-gpe/vxlan_gpe_ioam.c		\
	ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.c	\
	ioam/export-vxlan-gpe/vxlan_gpe_node.c		\
	ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.api.h\
	ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_thread.c

IOAM_VXLAN_GPE_NOINST_HDR =                       		\
  ioam/export/ioam_export_all_api_h.h   			\
  ioam/lib-vxlan-gpe/vxlan_gpe_all_api_h.h			\
  ioam/lib-vxlan-gpe/vxlan_gpe_msg_enum.h			\
  ioam/lib-vxlan-gpe/ioam_vxlan_gpe.api.h			\
  ioam/lib-vxlan-gpe/vxlan_gpe_ioam_util.h			\
  ioam/lib-vxlan-gpe/vxlan_gpe_ioam_packet.h                    \
  ioam/lib-vxlan-gpe/vxlan_gpe_ioam.h				\
  ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_all_api_h.h       \
  ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_msg_enum.h        \
  ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.api.h

IOAM_VXLAN_GPE_API  = ioam/lib-vxlan-gpe/ioam_vxlan_gpe.api
IOAM_VXLAN_GPE_API += ioam/export-vxlan-gpe/vxlan_gpe_ioam_export.api

ioam_vxlan_gpe_test_plugin_la_SOURCES =		\
	ioam/lib-vxlan-gpe/vxlan_gpe_test.c			\
	ioam/lib-vxlan-gpe/vxlan_gpe_plugin.api.h

vppapitestplugins_LTLIBRARIES += ioam_vxlan_gpe_test_plugin.la

vxlan_gpe_ioam_export_test_plugin_la_SOURCES =          \
  ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_test.c      \
  ioam/export-vxlan-gpe/vxlan_gpe_ioam_export_plugin.api.h

vppapitestplugins_LTLIBRARIES += vxlan_gpe_ioam_export_test_plugin.la

########################################
# iOAM E2E
########################################

IOAM_E2E_SRC =                			\
	ioam/encap/ip6_ioam_e2e.c               \
	ioam/encap/ip6_ioam_seqno.c		\
	ioam/lib-e2e/ioam_seqno_lib.c

IOAM_E2E_NOINST_HDR =                    \
	ioam/encap/ip6_ioam_e2e.h        \
	ioam/encap/ip6_ioam_seqno.h	 \
	ioam/lib-e2e/ioam_seqno_lib.h

########################################
# ipfix collector
########################################

IPFIX_COLLECTOR_SRC =				\
	ioam/ipfixcollector/ipfixcollector.c	\
	ioam/ipfixcollector/node.c		\
	ioam/ipfixcollector/ipfixcollector.h

########################################
# iOAM Analyse
########################################

IOAM_ANALYSE_SRC = 				\
	ioam/analyse/ip6/ip6_ioam_analyse.c	\
	ioam/analyse/ip6/node.c			\
	ioam/analyse/ip6/ip6_ioam_analyse.h	\
	ioam/analyse/ioam_summary_export.c	\
	ioam/analyse/ioam_analyse.h		\
	ioam/analyse/ioam_summary_export.h

########################################
# iOAM plugins
########################################

ioam_plugin_la_SOURCES =		\
        $(IOAM_POT_SRC)                 \
        $(IOAM_EXPORT_SRC)              \
        $(IOAM_TRACE_SRC)               \
        $(IOAM_VXLAN_GPE_SRC)   	\
        $(IOAM_E2E_SRC)			\
	$(IPFIX_COLLECTOR_SRC)		\
	$(IOAM_ANALYSE_SRC)

API_FILES +=				\
        $(IOAM_POT_API)                 \
        $(IOAM_EXPORT_API)              \
        $(IOAM_TRACE_API)               \
        $(IOAM_VXLAN_GPE_API)

noinst_HEADERS +=                               \
        $(IOAM_POT_NOINST_HDR)                  \
        $(IOAM_EXPORT_NOINST_HDR)               \
        $(IOAM_TRACE_NOINST_HDR)                \
        $(IOAM_VXLAN_GPE_NOINST_HDR)            \
        $(IOAM_E2E_NOINST_HDR)

vppplugins_LTLIBRARIES += ioam_plugin.la

# vi:syntax=automake