e2ca7c8
diff -up libvma-8.0.1/src/vlogger/vlogger.cpp.me libvma-8.0.1/src/vlogger/vlogger.cpp
e2ca7c8
diff -up libvma-8.0.1/src/vlogger/vlogger.h.me libvma-8.0.1/src/vlogger/vlogger.h
e2ca7c8
--- libvma-8.0.1/src/vlogger/vlogger.h.me	2018-02-05 16:37:02.817681804 +0100
e2ca7c8
+++ libvma-8.0.1/src/vlogger/vlogger.h	2018-02-05 16:41:24.109434120 +0100
e2ca7c8
@@ -223,11 +223,11 @@ static inline void vlog_printf(vlog_leve
e2ca7c8
 
e2ca7c8
 	switch (g_vlogger_details) {
e2ca7c8
 	case 3: // Time
e2ca7c8
-		len += snprintf(buf+len, VLOGGER_STR_SIZE-len-1, " Time: %9.3f", ((float)vlog_get_usec_since_start())/1000);
e2ca7c8
+		len += snprintf(buf+len, VLOGGER_STR_SIZE-len-1, " Time: %9.3f", ((float)vlog_get_usec_since_start())/1000); // fallthrough
e2ca7c8
 	case 2: // Pid
e2ca7c8
-		len += snprintf(buf+len, VLOGGER_STR_SIZE-len-1, " Pid: %5u", getpid());
e2ca7c8
+		len += snprintf(buf+len, VLOGGER_STR_SIZE-len-1, " Pid: %5u", getpid()); // fallthrough
e2ca7c8
 	case 1: // Tid
e2ca7c8
-		len += snprintf(buf+len, VLOGGER_STR_SIZE-len-1, " Tid: %5u", gettid());
e2ca7c8
+		len += snprintf(buf+len, VLOGGER_STR_SIZE-len-1, " Tid: %5u", gettid()); // fallthrough
e2ca7c8
 	case 0: // Func
e2ca7c8
 	default:
e2ca7c8
 		len += snprintf(buf+len, VLOGGER_STR_SIZE-len-1, " %s %s: ", g_vlogger_module_name, log_level::to_str(log_level));
e2ca7c8
diff -up libvma-8.0.1.me libvma-8.0.1
e2ca7c8
Nur in libvma-8.0.1.me: aclocal.m4.
e2ca7c8
Nur in libvma-8.0.1.me: autom4te.cache.
e2ca7c8
Gemeinsame Unterverzeichnisse: libvma-8.0.1.me/build und libvma-8.0.1/build.
e2ca7c8
Gemeinsame Unterverzeichnisse: libvma-8.0.1.me/config und libvma-8.0.1/config.
e2ca7c8
Nur in libvma-8.0.1.me: config.h.
e2ca7c8
Nur in libvma-8.0.1.me: config.h.in.
e2ca7c8
Nur in libvma-8.0.1.me: config.log.
e2ca7c8
Nur in libvma-8.0.1.me: config.status.
e2ca7c8
Nur in libvma-8.0.1.me: configure.
e2ca7c8
Gemeinsame Unterverzeichnisse: libvma-8.0.1.me/debian und libvma-8.0.1/debian.
e2ca7c8
Nur in libvma-8.0.1.me: libtool.
e2ca7c8
Nur in libvma-8.0.1.me: Makefile.
e2ca7c8
Nur in libvma-8.0.1.me: Makefile.in.
e2ca7c8
Gemeinsame Unterverzeichnisse: libvma-8.0.1.me/src und libvma-8.0.1/src.
e2ca7c8
Nur in libvma-8.0.1.me: stamp-h1.
e2ca7c8
Gemeinsame Unterverzeichnisse: libvma-8.0.1.me/tests und libvma-8.0.1/tests.
e2ca7c8
Nur in libvma-8.0.1.me: VMA_VERSION.
e2ca7c8
diff -up libvma-8.0.1.me/src/vma/dev/buffer_pool.cpp.me libvma-8.0.1.me/src/vma/dev/buffer_pool.cpp
e2ca7c8
--- libvma-8.0.1.me/src/vma/dev/buffer_pool.cpp.me	2018-02-05 16:50:45.046086354 +0100
e2ca7c8
+++ libvma-8.0.1.me/src/vma/dev/buffer_pool.cpp	2018-02-05 16:55:01.233840952 +0100
e2ca7c8
@@ -116,7 +116,7 @@ buffer_pool::buffer_pool(size_t buffer_c
e2ca7c8
 				throw_vma_exception_no_msg();
e2ca7c8
 			}
e2ca7c8
 			break;
e2ca7c8
-		}
e2ca7c8
+		} // fallthrough
e2ca7c8
 	case ALLOC_TYPE_CONTIG:
e2ca7c8
 #ifndef VMA_IBV_ACCESS_ALLOCATE_MR
e2ca7c8
 		m_is_contig_alloc = false;
e2ca7c8
@@ -132,6 +132,7 @@ buffer_pool::buffer_pool(size_t buffer_c
e2ca7c8
 			break;
e2ca7c8
 		}
e2ca7c8
 #endif
e2ca7c8
+	// fallthrough
e2ca7c8
 	case ALLOC_TYPE_ANON:
e2ca7c8
 	default:
e2ca7c8
 		__log_info_dbg("allocating memory using malloc()");
e2ca7c8
diff -up libvma-8.0.1.me/src/vma/dev/net_device_val.cpp.me libvma-8.0.1.me/src/vma/dev/net_device_val.cpp
e2ca7c8
diff -up libvma-8.0.1.me/src/vma/dev/qp_mgr.h.me libvma-8.0.1.me/src/vma/dev/qp_mgr.h
e2ca7c8
--- libvma-8.0.1.me/src/vma/dev/qp_mgr.h.me	2018-02-05 16:46:49.759393319 +0100
e2ca7c8
+++ libvma-8.0.1.me/src/vma/dev/qp_mgr.h	2018-02-05 16:50:25.235028000 +0100
e2ca7c8
@@ -179,7 +179,7 @@ class qp_mgr_eth : public qp_mgr
e2ca7c8
 {
e2ca7c8
 public:
e2ca7c8
 	qp_mgr_eth(const ring_simple* p_ring, const ib_ctx_handler* p_context, const uint8_t port_num,
e2ca7c8
-			struct ibv_comp_channel* p_rx_comp_event_channel, const uint32_t tx_num_wr, const uint16_t vlan) throw (vma_error) :
e2ca7c8
+			struct ibv_comp_channel* p_rx_comp_event_channel, const uint32_t tx_num_wr, const uint16_t vlan) :
e2ca7c8
 		qp_mgr(p_ring, p_context, port_num, tx_num_wr), m_vlan(vlan) { if(configure(p_rx_comp_event_channel)) throw_vma_exception("failed creating qp"); };
e2ca7c8
 
e2ca7c8
 	virtual void 		modify_qp_to_ready_state();
e2ca7c8
@@ -196,7 +196,7 @@ class qp_mgr_ib : public qp_mgr
e2ca7c8
 {
e2ca7c8
 public:
e2ca7c8
 	qp_mgr_ib(const ring_simple* p_ring, const ib_ctx_handler* p_context, const uint8_t port_num,
e2ca7c8
-			struct ibv_comp_channel* p_rx_comp_event_channel, const uint32_t tx_num_wr, const uint16_t pkey) throw (vma_error) :
e2ca7c8
+			struct ibv_comp_channel* p_rx_comp_event_channel, const uint32_t tx_num_wr, const uint16_t pkey) :
e2ca7c8
 		qp_mgr(p_ring, p_context, port_num, tx_num_wr), m_pkey(pkey) { update_pkey_index(); if(configure(p_rx_comp_event_channel)) throw_vma_exception("failed creating qp"); };
e2ca7c8
 
e2ca7c8
 	virtual void 		modify_qp_to_ready_state();
e2ca7c8
diff -up libvma-8.0.1.me/src/vma/dev/ring_bond.h.me libvma-8.0.1.me/src/vma/dev/ring_bond.h
e2ca7c8
--- libvma-8.0.1.me/src/vma/dev/ring_bond.h.me	2018-02-05 16:59:22.388610183 +0100
e2ca7c8
+++ libvma-8.0.1.me/src/vma/dev/ring_bond.h	2018-02-05 16:59:45.409677991 +0100
e2ca7c8
@@ -88,23 +88,23 @@ private:
e2ca7c8
 class ring_bond_eth : public ring_bond
e2ca7c8
 {
e2ca7c8
 public:
e2ca7c8
-	ring_bond_eth(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, int count, bool active_slaves[], uint16_t vlan, net_device_val::bond_type type, net_device_val::bond_xmit_hash_policy bond_xmit_hash_policy, uint32_t mtu) throw (vma_error):
e2ca7c8
+	ring_bond_eth(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, int count, bool active_slaves[], uint16_t vlan, net_device_val::bond_type type, net_device_val::bond_xmit_hash_policy bond_xmit_hash_policy, uint32_t mtu):
e2ca7c8
 		ring_bond(count, type, bond_xmit_hash_policy, mtu){
e2ca7c8
 		create_slave_list(local_if, p_ring_info, active_slaves, vlan);
e2ca7c8
 		update_rx_channel_fds();
e2ca7c8
 	};
e2ca7c8
 protected:
e2ca7c8
-	virtual void create_slave_list(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, bool active_slaves[], uint16_t partition) throw (vma_error);
e2ca7c8
+	virtual void create_slave_list(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, bool active_slaves[], uint16_t partition);
e2ca7c8
 };
e2ca7c8
 
e2ca7c8
 class ring_bond_ib : public ring_bond
e2ca7c8
 {
e2ca7c8
 public:
e2ca7c8
-	ring_bond_ib(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, int count, bool active_slaves[], uint16_t pkey, net_device_val::bond_type type, net_device_val::bond_xmit_hash_policy bond_xmit_hash_policy, uint32_t mtu) throw (vma_error):
e2ca7c8
+	ring_bond_ib(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, int count, bool active_slaves[], uint16_t pkey, net_device_val::bond_type type, net_device_val::bond_xmit_hash_policy bond_xmit_hash_policy, uint32_t mtu):
e2ca7c8
 		ring_bond(count, type, bond_xmit_hash_policy, mtu){
e2ca7c8
 		create_slave_list(local_if, p_ring_info, active_slaves, pkey);
e2ca7c8
 		update_rx_channel_fds();
e2ca7c8
 	};
e2ca7c8
 protected:
e2ca7c8
-	virtual void create_slave_list(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, bool active_slaves[], uint16_t partition) throw (vma_error);
e2ca7c8
+	virtual void create_slave_list(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, bool active_slaves[], uint16_t partition);
e2ca7c8
 };
e2ca7c8
diff -up libvma-8.0.1.me/src/vma/dev/ring_simple.h.me libvma-8.0.1.me/src/vma/dev/ring_simple.h
e2ca7c8
--- libvma-8.0.1.me/src/vma/dev/ring_simple.h.me	2018-02-05 16:56:07.957037486 +0100
e2ca7c8
+++ libvma-8.0.1.me/src/vma/dev/ring_simple.h	2018-02-05 16:56:36.450121414 +0100
e2ca7c8
@@ -40,7 +40,7 @@
e2ca7c8
 class ring_simple : public ring
e2ca7c8
 {
e2ca7c8
 public:
e2ca7c8
-	ring_simple(in_addr_t local_if, uint16_t partition_sn, int count, transport_type_t transport_type, uint32_t mtu, ring* parent = NULL) throw (vma_error);
e2ca7c8
+	ring_simple(in_addr_t local_if, uint16_t partition_sn, int count, transport_type_t transport_type, uint32_t mtu, ring* parent = NULL) ;
e2ca7c8
 	virtual ~ring_simple();
e2ca7c8
 
e2ca7c8
 	virtual int		request_notification(cq_type_t cq_type, uint64_t poll_sn);
e2ca7c8
@@ -86,7 +86,7 @@ public:
e2ca7c8
 
e2ca7c8
 protected:
e2ca7c8
 	virtual qp_mgr*		create_qp_mgr(const ib_ctx_handler* ib_ctx, uint8_t port_num, struct ibv_comp_channel* p_rx_comp_event_channel) = 0;
e2ca7c8
-	void			create_resources(ring_resource_creation_info_t* p_ring_info, bool active) throw (vma_error);
e2ca7c8
+	void			create_resources(ring_resource_creation_info_t* p_ring_info, bool active) ;
e2ca7c8
 	// Internal functions. No need for locks mechanism.
e2ca7c8
 	bool			rx_process_buffer(mem_buf_desc_t* p_rx_wc_buf_desc, transport_type_t m_transport_type, void* pv_fd_ready_array);
e2ca7c8
 	void			print_flow_to_rfs_udp_uc_map(flow_spec_udp_uc_map_t *p_flow_map);
e2ca7c8
@@ -149,21 +149,21 @@ private:
e2ca7c8
 class ring_eth : public ring_simple
e2ca7c8
 {
e2ca7c8
 public:
e2ca7c8
-	ring_eth(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, int count, bool active, uint16_t vlan, uint32_t mtu, ring* parent = NULL) throw (vma_error):
e2ca7c8
+	ring_eth(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, int count, bool active, uint16_t vlan, uint32_t mtu, ring* parent = NULL) :
e2ca7c8
 		ring_simple(local_if, vlan, count, VMA_TRANSPORT_ETH, mtu, parent) { create_resources(p_ring_info, active); };
e2ca7c8
 
e2ca7c8
 protected:
e2ca7c8
-	virtual qp_mgr* create_qp_mgr(const ib_ctx_handler* ib_ctx, uint8_t port_num, struct ibv_comp_channel* p_rx_comp_event_channel) throw (vma_error);
e2ca7c8
+	virtual qp_mgr* create_qp_mgr(const ib_ctx_handler* ib_ctx, uint8_t port_num, struct ibv_comp_channel* p_rx_comp_event_channel) ;
e2ca7c8
 };
e2ca7c8
 
e2ca7c8
 class ring_ib : public ring_simple
e2ca7c8
 {
e2ca7c8
 public:
e2ca7c8
-	ring_ib(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, int count, bool active, uint16_t pkey, uint32_t mtu, ring* parent = NULL) throw (vma_error):
e2ca7c8
+	ring_ib(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, int count, bool active, uint16_t pkey, uint32_t mtu, ring* parent = NULL) :
e2ca7c8
 		ring_simple(local_if, pkey, count, VMA_TRANSPORT_IB, mtu, parent) { create_resources(p_ring_info, active); };
e2ca7c8
 
e2ca7c8
 protected:
e2ca7c8
-	virtual qp_mgr* create_qp_mgr(const ib_ctx_handler* ib_ctx, uint8_t port_num, struct ibv_comp_channel* p_rx_comp_event_channel) throw (vma_error);
e2ca7c8
+	virtual qp_mgr* create_qp_mgr(const ib_ctx_handler* ib_ctx, uint8_t port_num, struct ibv_comp_channel* p_rx_comp_event_channel) ;
e2ca7c8
 };
e2ca7c8
 
e2ca7c8
 #endif //RING_SIMPLE_H
e2ca7c8
diff -up libvma-8.0.1.me/src/vma/sock/socket_fd_api.h.me libvma-8.0.1.me/src/vma/sock/socket_fd_api.h
e2ca7c8
--- libvma-8.0.1.me/src/vma/sock/socket_fd_api.h.me	2018-02-05 16:56:50.925164049 +0100
e2ca7c8
+++ libvma-8.0.1.me/src/vma/sock/socket_fd_api.h	2018-02-05 16:57:28.586274977 +0100
e2ca7c8
@@ -119,13 +119,13 @@ public:
e2ca7c8
 	virtual int getpeername(sockaddr *__name, socklen_t *__namelen);
e2ca7c8
 
e2ca7c8
 	virtual int setsockopt(int __level, int __optname,
e2ca7c8
-			       __const void *__optval, socklen_t __optlen) throw (vma_error);
e2ca7c8
+			       __const void *__optval, socklen_t __optlen) ;
e2ca7c8
 
e2ca7c8
 	virtual int getsockopt(int __level, int __optname, void *__optval,
e2ca7c8
-			       socklen_t *__optlen) throw (vma_error);
e2ca7c8
-	virtual int fcntl(int __cmd, unsigned long int __arg) throw (vma_error) = 0;
e2ca7c8
+			       socklen_t *__optlen) ;
e2ca7c8
+	virtual int fcntl(int __cmd, unsigned long int __arg) ;
e2ca7c8
 
e2ca7c8
-	virtual int ioctl(unsigned long int __request, unsigned long int __arg) throw (vma_error) = 0;
e2ca7c8
+	virtual int ioctl(unsigned long int __request, unsigned long int __arg) ;
e2ca7c8
 
e2ca7c8
 	virtual ssize_t rx(const rx_call_t call_type, iovec* iov,
e2ca7c8
 			   const ssize_t iovlen, int* p_flags = 0,
e2ca7c8
diff -up libvma-8.0.1.me/src/vma/sock/sockinfo.h.me libvma-8.0.1.me/src/vma/sock/sockinfo.h
e2ca7c8
--- libvma-8.0.1.me/src/vma/sock/sockinfo.h.me	2018-02-05 16:57:44.453321715 +0100
e2ca7c8
+++ libvma-8.0.1.me/src/vma/sock/sockinfo.h	2018-02-05 16:58:08.290391925 +0100
e2ca7c8
@@ -102,7 +102,7 @@ typedef std::tr1::unordered_map
e2ca7c8
 class sockinfo : public socket_fd_api, public pkt_rcvr_sink, public pkt_sndr_source, public wakeup_pipe
e2ca7c8
 {
e2ca7c8
 public:
e2ca7c8
-	sockinfo(int fd) throw (vma_exception);
e2ca7c8
+	sockinfo(int fd);
e2ca7c8
 	virtual ~sockinfo();
e2ca7c8
 
e2ca7c8
 #if _BullseyeCoverage
e2ca7c8
@@ -169,8 +169,8 @@ protected:
e2ca7c8
 	void*			m_rx_callback_context; // user context
e2ca7c8
 
e2ca7c8
 	virtual void 		set_blocking(bool is_blocked);
e2ca7c8
-	virtual int 		fcntl(int __cmd, unsigned long int __arg) throw (vma_error);
e2ca7c8
-	virtual int 		ioctl(unsigned long int __request, unsigned long int __arg) throw (vma_error);
e2ca7c8
+	virtual int 		fcntl(int __cmd, unsigned long int __arg);
e2ca7c8
+	virtual int 		ioctl(unsigned long int __request, unsigned long int __arg);
e2ca7c8
 
e2ca7c8
 	virtual	mem_buf_desc_t* get_front_m_rx_pkt_ready_list() = 0;
e2ca7c8
 	virtual	size_t get_size_m_rx_pkt_ready_list() = 0;
e2ca7c8
diff -up libvma-8.0.1.me/src/vma/sock/sock-redirect.h.me libvma-8.0.1.me/src/vma/sock/sock-redirect.h
e2ca7c8
--- libvma-8.0.1.me/src/vma/sock/sock-redirect.h.me	2018-02-05 16:55:23.796907411 +0100
e2ca7c8
+++ libvma-8.0.1.me/src/vma/sock/sock-redirect.h	2018-02-05 16:55:50.402985778 +0100
e2ca7c8
@@ -114,10 +114,10 @@ struct os_api {
e2ca7c8
 	int (*connect) (int __fd, const struct sockaddr *__to, socklen_t __tolen);
e2ca7c8
 	int (*listen) (int __fd, int __backlog);
e2ca7c8
 
e2ca7c8
-	int (*setsockopt) (int __fd, int __level, int __optname, __const void *__optval, socklen_t __optlen) throw (vma_error);
e2ca7c8
-	int (*getsockopt) (int __fd, int __level, int __optname, void *__optval, socklen_t *__optlen) throw (vma_error);
e2ca7c8
-	int (*fcntl) (int __fd, int __cmd, ...) throw (vma_error);
e2ca7c8
-	int (*ioctl) (int __fd, unsigned long int __request, ...) throw (vma_error);
e2ca7c8
+	int (*setsockopt) (int __fd, int __level, int __optname, __const void *__optval, socklen_t __optlen) ;
e2ca7c8
+	int (*getsockopt) (int __fd, int __level, int __optname, void *__optval, socklen_t *__optlen) ;
e2ca7c8
+	int (*fcntl) (int __fd, int __cmd, ...) ;
e2ca7c8
+	int (*ioctl) (int __fd, unsigned long int __request, ...) ;
e2ca7c8
 	int (*getsockname) (int __fd, struct sockaddr *__name,socklen_t *__namelen);
e2ca7c8
 	int (*getpeername) (int __fd, struct sockaddr *__name,socklen_t *__namelen);
e2ca7c8
 
e2ca7c8
diff -up libvma-8.0.1/src/stats/stats_publisher.cpp.me libvma-8.0.1/src/stats/stats_publisher.cpp
e2ca7c8
--- libvma-8.0.1/src/stats/stats_publisher.cpp.me	2018-02-05 20:51:58.289661916 +0100
e2ca7c8
+++ libvma-8.0.1/src/stats/stats_publisher.cpp	2018-02-05 20:54:40.342177526 +0100
e2ca7c8
@@ -189,7 +189,11 @@ void vma_shmem_stats_open(vlog_levels_t*
e2ca7c8
 
e2ca7c8
 	g_sh_mem_info.filename_sh_stats[0] = '\0';
e2ca7c8
 	g_sh_mem_info.p_sh_stats = MAP_FAILED;
e2ca7c8
-	sprintf(g_sh_mem_info.filename_sh_stats, "%s/vmastat.%d", mce_sys.stats_shmem_dirname, getpid());
e2ca7c8
+	ret = snprintf(g_sh_mem_info.filename_sh_stats, sizeof(g_sh_mem_info.filename_sh_stats), "%s/vmastat.%d", mce_sys.stats_shmem_dirname, getpid());
e2ca7c8
+	if (!((0 < ret) && (ret < (int)sizeof(g_sh_mem_info.filename_sh_stats)))) {
e2ca7c8
+		vlog_printf(VLOG_ERROR, "%s: Could not create file under %s %m\n", __func__, mce_sys.stats_shmem_dirname, errno);
e2ca7c8
+		goto no_shmem;
e2ca7c8
+	}
e2ca7c8
 	saved_mode = umask(0);
e2ca7c8
 	g_sh_mem_info.fd_sh_stats = open(g_sh_mem_info.filename_sh_stats, O_CREAT|O_RDWR, S_IRWXU | S_IRGRP | S_IWGRP | S_IROTH | S_IWOTH);
e2ca7c8
 	umask(saved_mode);
e2ca7c8
diff -up libvma-8.0.1/src/vma/config_parser.c.me libvma-8.0.1/src/vma/config_parser.c
e2ca7c8
--- libvma-8.0.1/src/vma/config_parser.c.me	2018-02-05 20:55:30.352336647 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/config_parser.c	2018-02-05 20:55:58.015424668 +0100
e2ca7c8
@@ -117,7 +117,7 @@ static void __vma_set_ipv4_addr(short a0
e2ca7c8
   
e2ca7c8
 	p_ipv4 = &(__vma_address_port_rule->ipv4);
e2ca7c8
   
e2ca7c8
-	sprintf(buf,"%d.%d.%d.%d", a0, a1, a2, a3);
e2ca7c8
+	snprintf(buf, sizeof(buf), "%hd.%hd.%hd.%hd", a0, a1, a2, a3);
e2ca7c8
 	if (!inet_aton(buf, p_ipv4))
e2ca7c8
 	{
e2ca7c8
 		parse_err = 1;
e2ca7c8
diff -up libvma-8.0.1/src/vma/dev/net_device_val.cpp.me libvma-8.0.1/src/vma/dev/net_device_val.cpp
e2ca7c8
--- libvma-8.0.1/src/vma/dev/net_device_val.cpp.me	2018-02-05 20:34:51.781395825 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/dev/net_device_val.cpp	2018-02-05 20:39:30.698283260 +0100
e2ca7c8
@@ -230,9 +230,12 @@ void net_device_val::configure(struct if
e2ca7c8
 		// find the ibv context and port num
e2ca7c8
 		for (int j=0; j
e2ca7c8
 			char ib_res[1024] = {0};
e2ca7c8
-			char ib_path[256] = {0};
e2ca7c8
-			sprintf(ib_path, "%s/device/resource", pp_ibv_context_list[j]->device->ibdev_path);
e2ca7c8
-			priv_read_file(ib_path, ib_res, 1024);
e2ca7c8
+			const char ib_path_format[] = "%s/device/resource";
e2ca7c8
+			char ib_path[IBV_SYSFS_PATH_MAX + sizeof(ib_path_format)] = {0};
e2ca7c8
+			snprintf(ib_path, sizeof(ib_path), ib_path_format, pp_ibv_context_list[j]->device->ibdev_path);
e2ca7c8
+			if (priv_read_file(ib_path, ib_res, sizeof(ib_res)) <= 0) {
e2ca7c8
+				continue;
e2ca7c8
+			}
e2ca7c8
 			if (strcmp(sys_res, ib_res) == 0) {
e2ca7c8
 				m_slaves[i]->p_ib_ctx = g_p_ib_ctx_handler_collection->get_ib_ctx(pp_ibv_context_list[j]);
e2ca7c8
 				int dev_id = -1;
e2ca7c8
diff -up libvma-8.0.1/src/vma/dev/ring_bond.cpp.me libvma-8.0.1/src/vma/dev/ring_bond.cpp
e2ca7c8
--- libvma-8.0.1/src/vma/dev/ring_bond.cpp.me	2018-02-05 20:42:02.186765259 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/dev/ring_bond.cpp	2018-02-05 20:42:10.008790148 +0100
e2ca7c8
@@ -465,7 +465,7 @@ void ring_bond::mem_buf_desc_return_to_o
e2ca7c8
 	ring_logpanic("programming error, how did we got here?");
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
-void ring_bond_eth::create_slave_list(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, bool active_slaves[], uint16_t vlan) throw (vma_error)
e2ca7c8
+void ring_bond_eth::create_slave_list(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, bool active_slaves[], uint16_t vlan)
e2ca7c8
 {
e2ca7c8
 	for (uint32_t i = 0; i < m_n_num_resources; i++) {
e2ca7c8
 		m_bond_rings[i] = new ring_eth(local_if, &p_ring_info[i], 1, active_slaves[i], vlan, get_mtu(), this);
e2ca7c8
@@ -482,7 +482,7 @@ void ring_bond_eth::create_slave_list(in
e2ca7c8
 	close_gaps_active_rings();
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
-void ring_bond_ib::create_slave_list(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, bool active_slaves[], uint16_t pkey) throw (vma_error)
e2ca7c8
+void ring_bond_ib::create_slave_list(in_addr_t local_if, ring_resource_creation_info_t* p_ring_info, bool active_slaves[], uint16_t pkey)
e2ca7c8
 {
e2ca7c8
 	for (uint32_t i = 0; i < m_n_num_resources; i++) {
e2ca7c8
 		m_bond_rings[i] = new ring_ib(local_if, &p_ring_info[i], 1, active_slaves[i], pkey, get_mtu(), this); // get_mtu() reads the MTU from ifconfig when created. Now passing it to its slaves. could have sent 0 here, as the MTU of the bond is already on the bond
e2ca7c8
diff -up libvma-8.0.1/src/vma/dev/ring_simple.cpp.me libvma-8.0.1/src/vma/dev/ring_simple.cpp
e2ca7c8
--- libvma-8.0.1/src/vma/dev/ring_simple.cpp.me	2018-02-05 20:40:52.005541960 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/dev/ring_simple.cpp	2018-02-05 20:41:42.553702792 +0100
e2ca7c8
@@ -80,18 +80,18 @@ inline void ring_simple::send_status_han
e2ca7c8
 	BULLSEYE_EXCLUDE_BLOCK_END
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
-qp_mgr* ring_eth::create_qp_mgr(const ib_ctx_handler* ib_ctx, uint8_t port_num, struct ibv_comp_channel* p_rx_comp_event_channel) throw (vma_error)
e2ca7c8
+qp_mgr* ring_eth::create_qp_mgr(const ib_ctx_handler* ib_ctx, uint8_t port_num, struct ibv_comp_channel* p_rx_comp_event_channel)
e2ca7c8
 {
e2ca7c8
 	return new qp_mgr_eth(this, ib_ctx, port_num, p_rx_comp_event_channel, get_tx_num_wr(), get_partition());
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
-qp_mgr* ring_ib::create_qp_mgr(const ib_ctx_handler* ib_ctx, uint8_t port_num, struct ibv_comp_channel* p_rx_comp_event_channel) throw (vma_error)
e2ca7c8
+qp_mgr* ring_ib::create_qp_mgr(const ib_ctx_handler* ib_ctx, uint8_t port_num, struct ibv_comp_channel* p_rx_comp_event_channel)
e2ca7c8
 {
e2ca7c8
 	return new qp_mgr_ib(this, ib_ctx, port_num, p_rx_comp_event_channel, get_tx_num_wr(), get_partition());
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
 
e2ca7c8
-ring_simple::ring_simple(in_addr_t local_if, uint16_t partition_sn, int count, transport_type_t transport_type, uint32_t mtu, ring* parent /*=NULL*/) throw (vma_error):
e2ca7c8
+ring_simple::ring_simple(in_addr_t local_if, uint16_t partition_sn, int count, transport_type_t transport_type, uint32_t mtu, ring* parent /*=NULL*/):
e2ca7c8
 	ring(count, mtu), m_lock_ring_rx("ring_simple:lock_rx"), m_lock_ring_tx("ring_simple:lock_tx"),
e2ca7c8
 	m_p_qp_mgr(NULL), m_p_cq_mgr_rx(NULL), m_p_cq_mgr_tx(NULL),
e2ca7c8
 	m_lock_ring_tx_buf_wait("ring:lock_tx_buf_wait"), m_tx_num_bufs(0), m_tx_num_wr(0), m_tx_num_wr_free(0),
e2ca7c8
@@ -182,7 +182,7 @@ ring_simple::~ring_simple()
e2ca7c8
 	ring_logdbg("delete ring() completed");
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
-void ring_simple::create_resources(ring_resource_creation_info_t* p_ring_info, bool active) throw (vma_error)
e2ca7c8
+void ring_simple::create_resources(ring_resource_creation_info_t* p_ring_info, bool active)
e2ca7c8
 {
e2ca7c8
 	ring_logdbg("new ring()");
e2ca7c8
 
e2ca7c8
@@ -201,8 +201,7 @@ void ring_simple::create_resources(ring_
e2ca7c8
 		VLOG_PRINTF_INFO_ONCE_THEN_ALWAYS(VLOG_ERROR, VLOG_DEBUG, "ibv_create_comp_channel for tx failed. m_p_tx_comp_event_channel = %p (errno=%d %m)", m_p_tx_comp_event_channel, errno);
e2ca7c8
 		if (errno == EMFILE) {
e2ca7c8
 			VLOG_PRINTF_INFO_ONCE_THEN_ALWAYS(VLOG_ERROR, VLOG_DEBUG, "did we run out of file descriptors? traffic may not be offloaded, increase ulimit -n");
e2ca7c8
-		}
e2ca7c8
-		throw_vma_exception("create event channel failed");
e2ca7c8
+		};
e2ca7c8
 	}
e2ca7c8
 	BULLSEYE_EXCLUDE_BLOCK_END
e2ca7c8
 
e2ca7c8
@@ -226,8 +225,7 @@ void ring_simple::create_resources(ring_
e2ca7c8
 		VLOG_PRINTF_INFO_ONCE_THEN_ALWAYS(VLOG_ERROR, VLOG_DEBUG, "ibv_create_comp_channel for rx failed. p_rx_comp_event_channel = %p (errno=%d %m)", m_p_rx_comp_event_channel, errno);
e2ca7c8
 		if (errno == EMFILE) {
e2ca7c8
 			VLOG_PRINTF_INFO_ONCE_THEN_ALWAYS(VLOG_ERROR, VLOG_DEBUG, "did we run out of file descriptors? traffic may not be offloaded, increase ulimit -n");
e2ca7c8
-		}
e2ca7c8
-		throw_vma_exception("create event channel failed");
e2ca7c8
+		};
e2ca7c8
 	}
e2ca7c8
 	BULLSEYE_EXCLUDE_BLOCK_END
e2ca7c8
 
e2ca7c8
diff -up libvma-8.0.1/src/vma/proto/flow_tuple.cpp.me libvma-8.0.1/src/vma/proto/flow_tuple.cpp
e2ca7c8
--- libvma-8.0.1/src/vma/proto/flow_tuple.cpp.me	2018-02-05 20:43:41.835082317 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/proto/flow_tuple.cpp	2018-02-05 20:44:57.456322925 +0100
e2ca7c8
@@ -160,7 +160,7 @@ bool flow_tuple::is_3_tuple()
e2ca7c8
 
e2ca7c8
 void flow_tuple::set_str()
e2ca7c8
 {
e2ca7c8
-	snprintf(m_str, STR_MAX_LENGTH, "dst:%d.%d.%d.%d:%d, src:%d.%d.%d.%d:%d, protocol:%s",
e2ca7c8
+	snprintf(m_str, sizeof(m_str), "dst:%hhu.%hhu.%hhu.%hhu:%hu, src:%hhu.%hhu.%hhu.%hhu:%hu, proto:%s",
e2ca7c8
 			NIPQUAD(m_dst_ip), ntohs(m_dst_port),
e2ca7c8
 			NIPQUAD(m_src_ip), ntohs(m_src_port),
e2ca7c8
 			__vma_get_protocol_str(m_protocol));
e2ca7c8
@@ -172,7 +172,7 @@ void flow_tuple::set_str()
e2ca7c8
 
e2ca7c8
 void flow_tuple_with_local_if::set_str()
e2ca7c8
 {
e2ca7c8
-	snprintf(m_str, STR_MAX_LENGTH, "dst:%d.%d.%d.%d:%d, src:%d.%d.%d.%d:%d, protocol:%s, local if:%d.%d.%d.%d",
e2ca7c8
+	snprintf(m_str, sizeof(m_str), "dst:%hhu.%hhu.%hhu.%hhu:%hu, src:%hhu.%hhu.%hhu.%hhu:%hu, proto:%s, if:%hhu.%hhu.%hhu.%hhu",
e2ca7c8
 			NIPQUAD(m_dst_ip), ntohs(m_dst_port),
e2ca7c8
 			NIPQUAD(m_src_ip), ntohs(m_src_port),
e2ca7c8
 			__vma_get_protocol_str(m_protocol), NIPQUAD(m_local_if));
e2ca7c8
diff -up libvma-8.0.1/src/vma/sock/pipeinfo.cpp.me libvma-8.0.1/src/vma/sock/pipeinfo.cpp
e2ca7c8
--- libvma-8.0.1/src/vma/sock/pipeinfo.cpp.me	2018-02-05 20:49:49.731252877 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/sock/pipeinfo.cpp	2018-02-05 20:50:05.167301990 +0100
e2ca7c8
@@ -43,7 +43,7 @@
e2ca7c8
 #define VLOG_PRINTF(log_level, log_fmt, log_args...) 		vlog_printf(log_level, "fd[%#x]:%s() " log_fmt "\n", m_fd, __FUNCTION__, ##log_args)
e2ca7c8
 #define VLOG_PRINTF_DETAILS(log_level, log_fmt, log_args...) 	vlog_printf(log_level, MODULE_NAME ":%d:fd[%#x]:%s() " log_fmt "\n", __LINE__, m_fd, __FUNCTION__, ##log_args)
e2ca7c8
 
e2ca7c8
-#define pi_logpanic(log_fmt, log_args...) 							VLOG_PRINTF(VLOG_PANIC, log_fmt, ##log_args);	throw;
e2ca7c8
+#define pi_logpanic(log_fmt, log_args...) 							VLOG_PRINTF(VLOG_PANIC, log_fmt, ##log_args);
e2ca7c8
 #define pi_logerr(log_fmt, log_args...) 							VLOG_PRINTF(VLOG_ERROR, log_fmt, ##log_args)
e2ca7c8
 #define pi_logwarn(log_fmt, log_args...) 							VLOG_PRINTF(VLOG_WARNING, log_fmt, ##log_args)
e2ca7c8
 #define pi_loginfo(log_fmt, log_args...) 							VLOG_PRINTF(VLOG_INFO, log_fmt, ##log_args)
e2ca7c8
@@ -125,7 +125,7 @@ void pipeinfo::clean_obj()
e2ca7c8
 	g_p_event_handler_manager->unregister_timers_event_and_delete(this);
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
-int pipeinfo::fcntl(int __cmd, unsigned long int __arg) throw (vma_error)
e2ca7c8
+int pipeinfo::fcntl(int __cmd, unsigned long int __arg)
e2ca7c8
 {
e2ca7c8
 	switch (__cmd) {
e2ca7c8
 	case F_SETFL:
e2ca7c8
@@ -163,7 +163,7 @@ int pipeinfo::fcntl(int __cmd, unsigned
e2ca7c8
 	return orig_os_api.fcntl(m_fd, __cmd, __arg);
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
-int pipeinfo::ioctl(unsigned long int __request, unsigned long int __arg) throw (vma_error)
e2ca7c8
+int pipeinfo::ioctl(unsigned long int __request, unsigned long int __arg)
e2ca7c8
 {
e2ca7c8
 	int *p_arg = (int *)__arg;
e2ca7c8
 
e2ca7c8
diff -up libvma-8.0.1/src/vma/sock/pipeinfo.h.me libvma-8.0.1/src/vma/sock/pipeinfo.h
e2ca7c8
--- libvma-8.0.1/src/vma/sock/pipeinfo.h.me	2018-02-05 20:49:12.706135069 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/sock/pipeinfo.h	2018-02-05 20:49:29.239187672 +0100
e2ca7c8
@@ -47,8 +47,8 @@ public:
e2ca7c8
 
e2ca7c8
 	virtual void clean_obj();
e2ca7c8
 
e2ca7c8
-	int	fcntl(int __cmd, unsigned long int __arg) throw (vma_error);
e2ca7c8
-	int 	ioctl(unsigned long int __request, unsigned long int __arg) throw (vma_error);
e2ca7c8
+	int	fcntl(int __cmd, unsigned long int __arg);
e2ca7c8
+	int 	ioctl(unsigned long int __request, unsigned long int __arg);
e2ca7c8
 
e2ca7c8
 	// Process a Rx request, we might have a ready packet, or we might block until
e2ca7c8
 	// we have one (if sockinfo::m_b_blocking == true)
e2ca7c8
diff -up libvma-8.0.1/src/vma/sock/socket_fd_api.cpp.me libvma-8.0.1/src/vma/sock/socket_fd_api.cpp
e2ca7c8
--- libvma-8.0.1/src/vma/sock/socket_fd_api.cpp.me	2018-02-05 20:50:20.506350795 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/sock/socket_fd_api.cpp	2018-02-05 20:50:28.599376542 +0100
e2ca7c8
@@ -155,7 +155,7 @@ int socket_fd_api::getpeername(sockaddr
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
 int socket_fd_api::setsockopt(int __level, int __optname,
e2ca7c8
-			      __const void *__optval, socklen_t __optlen) throw (vma_error)
e2ca7c8
+			      __const void *__optval, socklen_t __optlen)
e2ca7c8
 {
e2ca7c8
 	__log_info_func("");
e2ca7c8
 	int ret = orig_os_api.setsockopt(m_fd, __level, __optname, __optval, __optlen);
e2ca7c8
@@ -166,7 +166,7 @@ int socket_fd_api::setsockopt(int __leve
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
 int socket_fd_api::getsockopt(int __level, int __optname, void *__optval,
e2ca7c8
-			      socklen_t *__optlen) throw (vma_error)
e2ca7c8
+			      socklen_t *__optlen)
e2ca7c8
 {
e2ca7c8
 	__log_info_func("");
e2ca7c8
 	int ret = orig_os_api.getsockopt(m_fd, __level, __optname, __optval, __optlen);
e2ca7c8
diff -up libvma-8.0.1/src/vma/sock/sockinfo.cpp.me libvma-8.0.1/src/vma/sock/sockinfo.cpp
e2ca7c8
--- libvma-8.0.1/src/vma/sock/sockinfo.cpp.me	2018-02-05 20:45:56.355510329 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/sock/sockinfo.cpp	2018-02-05 20:46:38.833645483 +0100
e2ca7c8
@@ -60,7 +60,7 @@
e2ca7c8
 
e2ca7c8
 #define si_logdbg_no_funcname(log_fmt, log_args...)	do { if (g_vlogger_level >= VLOG_DEBUG) vlog_printf(VLOG_DEBUG, MODULE_NAME "[fd=%d]:%d: " log_fmt "\n", m_fd, __LINE__, ##log_args); } while (0)
e2ca7c8
 
e2ca7c8
-sockinfo::sockinfo(int fd) throw (vma_exception):
e2ca7c8
+sockinfo::sockinfo(int fd):
e2ca7c8
 		socket_fd_api(fd),
e2ca7c8
 		m_b_closed(false), m_b_blocking(true), m_protocol(PROTO_UNDEFINED),
e2ca7c8
 		m_lock_rcv(MODULE_NAME "::m_lock_rcv"),
e2ca7c8
@@ -117,7 +117,7 @@ void sockinfo::set_blocking(bool is_bloc
e2ca7c8
 	m_p_socket_stats->b_blocking = m_b_blocking;
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
-int sockinfo::fcntl(int __cmd, unsigned long int __arg) throw (vma_error)
e2ca7c8
+int sockinfo::fcntl(int __cmd, unsigned long int __arg)
e2ca7c8
 {
e2ca7c8
 	switch (__cmd) {
e2ca7c8
 	case F_SETFL:
e2ca7c8
@@ -160,7 +160,7 @@ int sockinfo::fcntl(int __cmd, unsigned
e2ca7c8
 	return orig_os_api.fcntl(m_fd, __cmd, __arg);
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
-int sockinfo::ioctl(unsigned long int __request, unsigned long int __arg) throw (vma_error)
e2ca7c8
+int sockinfo::ioctl(unsigned long int __request, unsigned long int __arg)
e2ca7c8
 {
e2ca7c8
 
e2ca7c8
 	int *p_arg = (int *)__arg;
e2ca7c8
diff -up libvma-8.0.1/src/vma/sock/sockinfo_tcp.cpp.me libvma-8.0.1/src/vma/sock/sockinfo_tcp.cpp
e2ca7c8
--- libvma-8.0.1/src/vma/sock/sockinfo_tcp.cpp.me	2018-02-05 20:48:22.058973921 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/sock/sockinfo_tcp.cpp	2018-02-05 20:48:52.602071103 +0100
e2ca7c8
@@ -170,7 +170,7 @@ inline void sockinfo_tcp::reuse_buffer(m
e2ca7c8
 	}
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
-sockinfo_tcp::sockinfo_tcp(int fd) throw (vma_exception) :
e2ca7c8
+sockinfo_tcp::sockinfo_tcp(int fd) :
e2ca7c8
         sockinfo(fd),
e2ca7c8
         m_timer_handle(NULL),
e2ca7c8
         m_timer_pending(false)
e2ca7c8
@@ -2923,7 +2923,7 @@ bad_state:
e2ca7c8
 #define TCP_INFO         11     /* Information about this connection. */
e2ca7c8
 #define TCP_QUICKACK     12     /* Bock/reenable quick ACKs.  */
e2ca7c8
 
e2ca7c8
-int sockinfo_tcp::fcntl(int __cmd, unsigned long int __arg) throw (vma_error)
e2ca7c8
+int sockinfo_tcp::fcntl(int __cmd, unsigned long int __arg)
e2ca7c8
 {
e2ca7c8
 	if (!mce_sys.avoid_sys_calls_on_tcp_fd || !is_connected())
e2ca7c8
 		return sockinfo::fcntl(__cmd, __arg);
e2ca7c8
@@ -2954,7 +2954,7 @@ int sockinfo_tcp::fcntl(int __cmd, unsig
e2ca7c8
 	return sockinfo::fcntl(__cmd, __arg);
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
-int sockinfo_tcp::ioctl(unsigned long int __request, unsigned long int __arg)  throw (vma_error)
e2ca7c8
+int sockinfo_tcp::ioctl(unsigned long int __request, unsigned long int __arg)
e2ca7c8
 {
e2ca7c8
 	if (!mce_sys.avoid_sys_calls_on_tcp_fd || !is_connected())
e2ca7c8
 		return sockinfo::ioctl(__request, __arg);
e2ca7c8
@@ -3040,7 +3040,7 @@ bool sockinfo_tcp::try_un_offloading() /
e2ca7c8
 ////////////////////////////////////////////////////////////////////////////////
e2ca7c8
 #define SOCKOPT_HANDLE_BY_OS -2
e2ca7c8
 int sockinfo_tcp::setsockopt(int __level, int __optname,
e2ca7c8
-                              __const void *__optval, socklen_t __optlen) throw (vma_error)
e2ca7c8
+                              __const void *__optval, socklen_t __optlen)
e2ca7c8
 {
e2ca7c8
 	//todo check optlen and set proper errno on failure
e2ca7c8
 
e2ca7c8
@@ -3297,7 +3297,7 @@ int sockinfo_tcp::getsockopt_offload(int
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
 int sockinfo_tcp::getsockopt(int __level, int __optname, void *__optval,
e2ca7c8
-		socklen_t *__optlen) throw (vma_error)
e2ca7c8
+		socklen_t *__optlen)
e2ca7c8
 {
e2ca7c8
 	int ret = getsockopt_offload(__level, __optname, __optval, __optlen);
e2ca7c8
 	if (ret != SOCKOPT_HANDLE_BY_OS)
e2ca7c8
diff -up libvma-8.0.1/src/vma/sock/sockinfo_tcp.h.me libvma-8.0.1/src/vma/sock/sockinfo_tcp.h
e2ca7c8
--- libvma-8.0.1/src/vma/sock/sockinfo_tcp.h.me	2018-02-05 18:30:44.283370969 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/sock/sockinfo_tcp.h	2018-02-05 18:31:16.207484436 +0100
e2ca7c8
@@ -95,7 +95,7 @@ typedef std::map
e2ca7c8
 class sockinfo_tcp : public sockinfo, public timer_handler
e2ca7c8
 {
e2ca7c8
 public:
e2ca7c8
-	sockinfo_tcp(int fd) throw (vma_exception);
e2ca7c8
+	sockinfo_tcp(int fd);
e2ca7c8
 	virtual ~sockinfo_tcp();
e2ca7c8
 
e2ca7c8
 	virtual void clean_obj();
e2ca7c8
@@ -118,10 +118,10 @@ public:
e2ca7c8
 	void create_dst_entry();
e2ca7c8
 	bool prepare_dst_to_send(bool is_accepted_socket = false);
e2ca7c8
 
e2ca7c8
-	virtual int fcntl(int __cmd, unsigned long int __arg) throw (vma_error);
e2ca7c8
-	virtual int ioctl(unsigned long int __request, unsigned long int __arg)  throw (vma_error);
e2ca7c8
-	virtual int setsockopt(int __level, int __optname, const void *__optval, socklen_t __optlen) throw (vma_error);
e2ca7c8
-	virtual int getsockopt(int __level, int __optname, void *__optval, socklen_t *__optlen) throw (vma_error);
e2ca7c8
+	virtual int fcntl(int __cmd, unsigned long int __arg);
e2ca7c8
+	virtual int ioctl(unsigned long int __request, unsigned long int __arg);
e2ca7c8
+	virtual int setsockopt(int __level, int __optname, const void *__optval, socklen_t __optlen);
e2ca7c8
+	virtual int getsockopt(int __level, int __optname, void *__optval, socklen_t *__optlen);
e2ca7c8
 	int getsockopt_offload(int __level, int __optname, void *__optval, socklen_t *__optlen);
e2ca7c8
 	virtual int connect(const sockaddr*, socklen_t);
e2ca7c8
 	virtual int bind(const sockaddr *__addr, socklen_t __addrlen);
e2ca7c8
diff -up libvma-8.0.1/src/vma/sock/sockinfo_udp.cpp.me libvma-8.0.1/src/vma/sock/sockinfo_udp.cpp
e2ca7c8
--- libvma-8.0.1/src/vma/sock/sockinfo_udp.cpp.me	2018-02-05 20:47:41.730845607 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/sock/sockinfo_udp.cpp	2018-02-05 20:48:02.920913029 +0100
e2ca7c8
@@ -363,7 +363,7 @@ const char * setsockopt_ip_opt_to_str(in
e2ca7c8
 // Throttle the amount of ring polling we do (remember last time we check for receive packets)
e2ca7c8
 tscval_t g_si_tscv_last_poll = 0;
e2ca7c8
 
e2ca7c8
-sockinfo_udp::sockinfo_udp(int fd) throw (vma_exception) :
e2ca7c8
+sockinfo_udp::sockinfo_udp(int fd) :
e2ca7c8
 	sockinfo(fd)
e2ca7c8
 	,m_mc_tx_if(INADDR_ANY)
e2ca7c8
 	,m_b_mc_tx_loop(mce_sys.tx_mc_loopback_default) // default value is 'true'. User can change this with config parameter SYS_VAR_TX_MC_LOOPBACK
e2ca7c8
@@ -694,7 +694,7 @@ int sockinfo_udp::on_sockname_change(str
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
 ////////////////////////////////////////////////////////////////////////////////
e2ca7c8
-int sockinfo_udp::setsockopt(int __level, int __optname, __const void *__optval, socklen_t __optlen) throw (vma_error)
e2ca7c8
+int sockinfo_udp::setsockopt(int __level, int __optname, __const void *__optval, socklen_t __optlen)
e2ca7c8
 {
e2ca7c8
 	si_udp_logfunc("level=%d, optname=%d", __level, __optname);
e2ca7c8
 
e2ca7c8
@@ -1090,7 +1090,7 @@ int sockinfo_udp::setsockopt(int __level
e2ca7c8
 	return orig_os_api.setsockopt(m_fd, __level, __optname, __optval, __optlen);
e2ca7c8
 }
e2ca7c8
 
e2ca7c8
-int sockinfo_udp::getsockopt(int __level, int __optname, void *__optval, socklen_t *__optlen) throw (vma_error)
e2ca7c8
+int sockinfo_udp::getsockopt(int __level, int __optname, void *__optval, socklen_t *__optlen)
e2ca7c8
 {
e2ca7c8
 	si_udp_logfunc("level=%d, optname=%d", __level, __optname);
e2ca7c8
 
e2ca7c8
diff -up libvma-8.0.1/src/vma/sock/sockinfo_udp.h.me libvma-8.0.1/src/vma/sock/sockinfo_udp.h
e2ca7c8
--- libvma-8.0.1/src/vma/sock/sockinfo_udp.h.me	2018-02-05 20:47:05.955731778 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/sock/sockinfo_udp.h	2018-02-05 20:47:22.191783438 +0100
e2ca7c8
@@ -92,7 +92,7 @@ struct cmsg_state
e2ca7c8
 class sockinfo_udp : public sockinfo
e2ca7c8
 {
e2ca7c8
 public:
e2ca7c8
-	sockinfo_udp(int fd) throw (vma_exception);
e2ca7c8
+	sockinfo_udp(int fd);
e2ca7c8
 	virtual ~sockinfo_udp();
e2ca7c8
 
e2ca7c8
 	void 	setPassthrough() { m_p_socket_stats->b_is_offloaded = m_sock_offload = false;}
e2ca7c8
@@ -103,8 +103,8 @@ public:
e2ca7c8
 	int	bind(const struct sockaddr *__addr, socklen_t __addrlen);
e2ca7c8
 	int	connect(const struct sockaddr *__to, socklen_t __tolen);
e2ca7c8
 	int	getsockname(struct sockaddr *__name, socklen_t *__namelen);
e2ca7c8
-	int	setsockopt(int __level, int __optname, const void *__optval, socklen_t __optlen) throw (vma_error);
e2ca7c8
-	int	getsockopt(int __level, int __optname, void *__optval, socklen_t *__optlen) throw (vma_error);
e2ca7c8
+	int	setsockopt(int __level, int __optname, const void *__optval, socklen_t __optlen);
e2ca7c8
+	int	getsockopt(int __level, int __optname, void *__optval, socklen_t *__optlen);
e2ca7c8
 
e2ca7c8
 	/**
e2ca7c8
 	* Sampling the OS immediately by matching the rx_skip_os counter (m_rx_udp_poll_os_ratio_counter) to the limit (mce_sys.rx_udp_poll_os_ratio)
e2ca7c8
diff -up libvma-8.0.1/src/vma/sock/sock-redirect.cpp.me libvma-8.0.1/src/vma/sock/sock-redirect.cpp
e2ca7c8
--- libvma-8.0.1/src/vma/sock/sock-redirect.cpp.me	2018-02-05 20:50:44.442426951 +0100
e2ca7c8
+++ libvma-8.0.1/src/vma/sock/sock-redirect.cpp	2018-02-05 20:51:04.640491219 +0100
e2ca7c8
@@ -623,7 +623,7 @@ int connect(int __fd, const struct socka
e2ca7c8
    Returns 0 on success, -1 for errors.  */
e2ca7c8
 extern "C"
e2ca7c8
 int setsockopt(int __fd, int __level, int __optname,
e2ca7c8
-	       __const void *__optval, socklen_t __optlen) throw (vma_error)
e2ca7c8
+	       __const void *__optval, socklen_t __optlen)
e2ca7c8
 {
e2ca7c8
 	BULLSEYE_EXCLUDE_BLOCK_START
e2ca7c8
 	if (!orig_os_api.setsockopt) get_orig_funcs();
e2ca7c8
@@ -659,7 +659,7 @@ int setsockopt(int __fd, int __level, in
e2ca7c8
    Returns 0 on success, -1 for errors.  */
e2ca7c8
 extern "C"
e2ca7c8
 int getsockopt(int __fd, int __level, int __optname,
e2ca7c8
-	       void *__optval, socklen_t *__optlen) throw (vma_error)
e2ca7c8
+	       void *__optval, socklen_t *__optlen)
e2ca7c8
 {
e2ca7c8
 	BULLSEYE_EXCLUDE_BLOCK_START
e2ca7c8
 	if (!orig_os_api.getsockopt) get_orig_funcs();
e2ca7c8
@@ -706,7 +706,7 @@ int getsockopt(int __fd, int __level, in
e2ca7c8
    accordingly (see README.txt)
e2ca7c8
    */
e2ca7c8
 extern "C"
e2ca7c8
-int fcntl(int __fd, int __cmd, ...) throw (vma_error)
e2ca7c8
+int fcntl(int __fd, int __cmd, ...)
e2ca7c8
 {
e2ca7c8
 	BULLSEYE_EXCLUDE_BLOCK_START
e2ca7c8
 	if (!orig_os_api.fcntl) get_orig_funcs();
e2ca7c8
@@ -743,7 +743,7 @@ int fcntl(int __fd, int __cmd, ...) thro
e2ca7c8
    One argument may follow; its presence and type depend on REQUEST.
e2ca7c8
    Return value depends on REQUEST.  Usually -1 indicates error. */
e2ca7c8
 extern "C"
e2ca7c8
-int ioctl (int __fd, unsigned long int __request, ...) throw (vma_error)
e2ca7c8
+int ioctl (int __fd, unsigned long int __request, ...)
e2ca7c8
 {
e2ca7c8
 	BULLSEYE_EXCLUDE_BLOCK_START
e2ca7c8
 	if (!orig_os_api.fcntl) get_orig_funcs();
18e8881
diff -up libvma-8.0.1/src/stats/stats_reader.cpp.me libvma-8.0.1/src/stats/stats_reader.cpp
18e8881
--- libvma-8.0.1/src/stats/stats_reader.cpp.me	2018-02-05 21:25:40.793097034 +0100
18e8881
+++ libvma-8.0.1/src/stats/stats_reader.cpp	2018-02-05 21:28:30.415637551 +0100
18e8881
@@ -1525,7 +1525,7 @@ int  init_print_process_stats(sh_mem_inf
18e8881
 	sh_mem_t* sh_mem;
18e8881
 	int pid = sh_mem_info.pid;
18e8881
 
18e8881
-	sprintf(sh_mem_info.filename_sh_stats, "%s/vmastat.%d", g_vma_shmem_dir, pid);
18e8881
+	snprintf(sh_mem_info.filename_sh_stats, sizeof(sh_mem_info.filename_sh_stats), "%s/vmastat.%d", g_vma_shmem_dir, pid);
18e8881
 	
18e8881
 	if (user_params.write_auth)
18e8881
 		sh_mem_info.fd_sh_stats = open(sh_mem_info.filename_sh_stats,O_RDWR, S_IRWXU|S_IROTH);