Commit Graph

4518 Commits

Author SHA1 Message Date
Jasvinder Singh
52f7a5aeb1 port: fix burst size mask type
Fixes the variable bsz_mask type from uint32_t to uint64_t

Fixes: 4d97e8b565 ("port: ethdev")
Fixes: 304c8091e9 ("port: add ethdev writer nodrop")
Fixes: 8dceb6aa6e ("port: hierarchical scheduler")
Fixes: 3e5966837a ("port: new Tx burst implementation of ring writer")
Fixes: 5f4cd47309 ("port: add ring writer nodrop")

Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
2016-04-11 22:22:08 +02:00
John McNamara
03600dd583 doc: add tested platforms and nics
Add a new section on tested platforms and nics to the release notes.

Signed-off-by: Qian Xu <qian.q.xu@intel.com>
Signed-off-by: John McNamara <john.mcnamara@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2016-04-11 16:48:48 +02:00
Christian Ehrhardt
bece7b6cf6 app/testpmd: fix running without Xen whereas enabled
With LIBRTE_PMD_XENVIRT enabled testpmd is built in a way to ONLY work
in XEN environments.
It will surface as:
   PMD: gntalloc: ioctl error
   EAL: Error - exiting with code: 1
     Cause: Creation of mbuf pool for socket 0 failed

With LIBRTE_PMD_XENVIRT enabled this now tries the xen style grant
table allocation, but falls back gracefully for the normal allocation.

The only thing left in the log will be the
   PMD: gntalloc: ioctl error

Signed-off-by: Christian Ehrhardt <christian.ehrhardt@canonical.com>
2016-04-11 16:44:15 +02:00
Daniel Mrzyglod
fe671356ed vfio: fix resource leak
Coverity ID 13289: Resource leak:
The system resource will not be reclaimed and reused,
reducing the future availability of the resource.
In pci_vfio_get_group_fd: Leak of memory or pointers to system resources

Fixes: ff0b67d1c8 ("vfio: DMA mapping")

Signed-off-by: Daniel Mrzyglod <danielx.t.mrzyglod@intel.com>
Acked-by: Anatoly Burakov <anatoly.burakov@intel.com>
2016-04-11 14:35:20 +02:00
Marvin Liu
e5140f5266 examples/vm_power_manager: fix libvirt dependency check
vm_power_manager utilize libvirt API virDomainGetVcpuPinInfo to
retrieve domU vcpu information. This API is implemented from version 0.9.3.
Suse11 SP3 32bit default libvirt version is 0.8.8.

examples/vm_power_manager/channel_manager.c:
channel_manager.c:117:3: error: implicit declaration of function
'virDomainGetVcpuPinInfo'

Check and skip it from examples or raise an error when trying to compile
without libvirt or with a too old libvirt.

Fixes: e8ae9b662 ("examples/vm_power: channel manager and monitor in host")

Signed-off-by: Marvin Liu <yong.liu@intel.com>
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Bruce Richardson <bruce.richardson@intel.com>
2016-04-11 14:29:19 +02:00
Olivier Matz
411c22d4e0 app/test: fix memory corruption in reentrancy autotest
The mempool element size is set to 0, but 4 bytes are written in
my_obj_init():

  uint32_t *objnum = obj;
  memset(obj, 0, mp->elt_size);
  *objnum = i;

Change the MEMPOOL_ELT_SIZE constant to sizeof(uint32_t). This fixes
memory corruptions since we were writing outside of the object
boundaries.

Fixes: 104a92bd02 ("app: add reentrancy tests")

Signed-off-by: Olivier Matz <olivier.matz@6wind.com>
2016-04-11 12:13:16 +02:00
Pablo de Lara
8a78fa6115 examples/vhost_xen: fix 32-bit build
Compilation fails on 32 bits on Vhost_xen sample app, due to wrong casting:

examples/vhost_xen/vhost_monitor.c: In function ‘new_device’:
examples/vhost_xen/vhost_monitor.c:288:62: error: cast from pointer to integer
                               of different size [-Werror=pointer-to-int-cast]

Fixes: 47bd46112b ("xen: import xenvirt pmd and vhost_xen")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2016-04-10 21:36:54 +02:00
Pablo de Lara
57d78d33be xenvirt: fix 32-bit build
Compilation fails on 32 bits on Xen driver, due to wrong casting:

drivers/net/xenvirt/virtqueue.h: In function ‘virtqueue_enqueue_xmit’:
drivers/net/xenvirt/virtqueue.h:234:24: error: cast from pointer to integer
                            of different size [-Werror=pointer-to-int-cast]
  start_dp[idx].addr  = rte_pktmbuf_mtod(cookie, uint64_t);
                        ^

Fixes: d6b324c00f ("mbuf: get DMA address")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2016-04-10 21:36:54 +02:00
David Marchand
c7970afddf doc: announce API changes for device objects
Following discussions with Jan, here is a deprecation notice to prepare for
hotplug and rte_device changes to come in 16.07.

Signed-off-by: David Marchand <david.marchand@6wind.com>
Acked-by: Jan Viktorin <viktorin@rehivetech.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2016-04-10 12:07:57 +02:00
Yuanhan Liu
f4f136c8c4 doc: announce API changes for vhost refactoring
We currently exposed way too many fields (or even structures) than
necessary. For example, vhost_virtqueue struct should NOT be exposed
to user at all: application just need to tell the right queue id to
locate a specific queue, and that's all. Instead, the structure should
be defined in an internal header file. With that, we could do any changes
to it we want, without worrying about that we may offense the painful
ABI rules.

Similar changes could be done to virtio_net struct as well, just exposing
very few fields that are necessary and moving all others to an internal
structure.

Huawei then suggested a more radical yet much cleaner one: just exposing
a virtio_net handle to application, just like the way kernel exposes an
fd to user for locating a specific file, and exposing some new functions
to access those old fields, such as flags, virt_qp_nb.

With this change, we're likely to be free from ABI violations forever
(well, except when we have to extend the virtio_net_device_ops struct).
For example, following nice cleanup would not be a blocking one then:

    http://dpdk.org/ml/archives/dev/2016-February/033528.html

Suggested-by: Huawei Xie <huawei.xie@intel.com>
Signed-off-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
Acked-by: Panu Matilainen <pmatilai@redhat.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2016-04-10 12:07:57 +02:00
Lazaros Koromilas
fcd5106cf1 doc: announce ABI changes for user-owned mempool caches
Deprecation notice for 16.04 for changes targeting release 16.07.
The changes affect struct rte_mempool, rte_mempool_cache and the
mempool API.

Signed-off-by: Lazaros Koromilas <l@nofutznetworks.com>
Acked-by: Olivier Matz <olivier.matz@6wind.com>
Acked-by: David Hunt <david.hunt@intel.com>
2016-04-10 12:07:57 +02:00
Ferruh Yigit
114c7ed021 maintainers: claim responsibility for pcap PMD
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
2016-04-10 11:45:42 +02:00
Ferruh Yigit
205acc46bc doc: fill nics features matrix for pcap
Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
2016-04-10 11:45:42 +02:00
Declan Doherty
0318c02b57 doc: add cryptodev chapter in prog guide
Add a programmer's guide section for cryptodev library.

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
2016-04-09 00:40:33 +02:00
Declan Doherty
2373c0661b doc: add cryptodevs guide overview
Details supported device features and algorithms for each crypto PMD.

Signed-off-by: Declan Doherty <declan.doherty@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
2016-04-09 00:40:33 +02:00
Wenzhuo Lu
533e050a06 ixgbe: fix packet type for VXLAN and NVGRE on X550
VxLAN & NVGRE are supported by x550. As we know HW can parse
the packet and tell SW the type info. For VxLAN & NVGRE packets
there's some change. HW will not tell SW the info of the outer
header but the inner header instead. But we always take the
info as it's for the outer header. So the packet type info is
not right when x550 receives VxLAN & NVGRE packets.

As x550 only supports IPv4 VxLAN & NVGRE packets, we can tell
the outer header of VxLAN is IPv4 + UDP, and the outer header
of NVGRE is IPv4 only. What we don't know is if there's
optional field in the outer IPv4 header.

This patch implement the support of packet type for VxLAN &
NVGRE. And it fixes the wrong packet type issue either.

BTW:
It doesn't fix any existing commit as although it resolve an
issue it's more like a new feature but not a fix.

Reported-by: Konstantin Ananyev <konstantin.ananyev@intel.com>
Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
2016-04-08 22:33:19 +02:00
Pablo de Lara
e3898dc486 examples/performance-thread: restrict to x86_64
Performance-thread sample app is only supported for x86_64 targets,
so this commit adds a check to avoid compilation on other targets.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2016-04-08 22:28:39 +02:00
Pablo de Lara
6608522447 examples/ipsec-secgw: fix anonymous union initialization
In icc 14.0, compilation was broken:

examples/ipsec-secgw/sa.c(212): error: a designator for an anonymous
union member can only appear within braces corresponding to that anonymous union
        .cipher = { RTE_CRYPTO_CIPHER_OP_ENCRYPT, RTE_CRYPTO_CIPHER_AES_CBC,
         ^

The member in anonymous union initialization should be inside '{}',
otherwise it will report an error.

Fixes: d299106e8e ("examples/ipsec-secgw: add IPsec sample application")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2016-04-08 22:28:39 +02:00
Jasvinder Singh
6736fe5381 examples/ip_pipeline: fix 32-bit build
error log:
ip_pipeline/pipeline/pipeline_routing_be.c:1537:
	integer constant is too large for 'long' type

Fixes: 0ae7275810 ("examples/ip_pipeline: add more functions to routing pipeline")

Signed-off-by: Jasvinder Singh <jasvinder.singh@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: John McNamara <john.mcnamara@intel.com>
2016-04-08 22:28:39 +02:00
Marcin Kerlin
662c54e668 examples/ip_pipeline: fix size of allocated memory
CID 120150:
Wrong size of the allocated memory. Passing argument as size of pointer
(8UL) instead of size of structure app_pipeline_firewall_rule.

Fixes: 67ebdbef0c ("examples/ip_pipeline: add bulk update of firewall rules")

Signed-off-by: Marcin Kerlin <marcinx.kerlin@intel.com>
2016-04-08 22:28:39 +02:00
Thomas Monjalon
c0f81e9020 version: 16.04-rc4
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2016-04-07 23:42:14 +02:00
Harry van Haaren
534654ec59 doc: announce API change for extended stats
This patch adds a notice that the API for the xstats
functionality will be modified in the 16.07 release, with
no backwards compatibility planned as it would require
code duplication in each PMD that supports xstats.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
Acked-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Remy Horton <remy.horton@intel.com>
Acked-by: David Harton <dharton@cisco.com>
Acked-by: Maryam Tahhan <maryam.tahhan@intel.com>
2016-04-07 23:36:56 +02:00
Fan Zhang
7305f083d6 doc: announce ABI change for pcap in pipeline port
Several new fields will be added to structure rte_port_source_params for
source port enhancement with pcap file reading support.

Signed-off-by: Fan Zhang <roy.fan.zhang@intel.com>
Acked-by: Cristian Dumitrescu <cristian.dumitrescu@intel.com>
Acked-by: Jasvinder Singh <jasvinder.singh@intel.com>
Acked-by: Piotr Azarewicz <piotrx.t.azarewicz@intel.com>
2016-04-07 23:27:45 +02:00
John McNamara
8d25723569 doc: fix spellings
Fix some spelling errors and typos.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
2016-04-07 23:27:45 +02:00
Rasesh Mody
8ed4d80822 doc: fill nics features matrix for bnx2x
Signed-off-by: Rasesh Mody <rasesh.mody@qlogic.com>
2016-04-07 23:16:04 +02:00
Thomas Monjalon
7d85af1362 scripts: test build with libsso
The SNOW3G PMD has a dependency on libsso which can be downloaded
after having passed some Intel validation about export restrictions.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2016-04-07 23:05:47 +02:00
Thomas Monjalon
6e38dfe213 scripts: add verbose test build option
The option -v enables the verbose mode when testing a build.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2016-04-07 23:05:47 +02:00
Thomas Monjalon
c7e8b41ad4 scripts: hook build test config
Insert a hook at the end of the config procedure, after having
adapted the configuration to the environment variables and the options
passed to the script.
It allows to better tune the automatic configuration of the build tests
in a function located in the devel config file.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2016-04-07 23:05:47 +02:00
Thomas Monjalon
d568d5d38d scripts: allow tuning any test build option
Any build option can be enabled or disabled by appending the end
of its name to the config name.
Examples:
	+INTRINSICS to enable CONFIG_RTE_FORCE_INTRINSICS
	~RXTX_CALLBACKS to disable CONFIG_RTE_ETHDEV_RXTX_CALLBACKS

These builtin (lowercase) options are also added for convenience:
	+debug to enable every debug options
	+default to set target machine as default

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2016-04-07 23:05:47 +02:00
Thomas Monjalon
7d7c713f3c scripts: allow tuning build options per test target
The global variables are reloaded between each build to allow
having different config options based on DPDK_TARGET.

Some checks can now be removed from the script as they can
be done in the devel config file.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2016-04-07 23:05:47 +02:00
Thomas Monjalon
1335dcf780 scripts: stop build test after first error
Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2016-04-07 23:05:47 +02:00
Thomas Monjalon
8067621d1f scripts: test build of performance-thread example
This example is not part of the baseline because of its
experimental state. That's why it must be tested separately.

Fixes: b700090c8c ("examples/performance-thread: mark as experimental")

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2016-04-07 23:05:47 +02:00
Thomas Monjalon
462cc98b5c scripts: remove legacy build method test
Building with "make install T=" is now deprecated.
The script will test only the standard "make" command.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2016-04-07 23:05:47 +02:00
Thomas Monjalon
af6bc978ad scripts: fix run in any directory
The path to load-devel-config.sh must be relative to the script.

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2016-04-07 23:05:47 +02:00
Thomas Monjalon
f795c1e66e mk: show version as a decimal integer
In order to ease packaging support of changes in DPDK build system,
introduce a decimal integer to compare version numbers.
It does not show the minor numbers as it is not meaningful for packaging.

Usage for DPDK 16.04:
% make showversionum
1604

Signed-off-by: Thomas Monjalon <thomas.monjalon@6wind.com>
2016-04-07 23:05:47 +02:00
Tomasz Kulasek
dd1c68fab2 examples: fix draining all queues in l3fwd derivatives
In l3fwd-acl and l3fwd-power not all tx ports was included in tx_port_id
array, used to periodically drain only available ports. This caused that
some packets can remain in buffer when application stops to receiving
packets or when size of burst is small.

Fixes: e2366e74e0 ("examples: use buffered Tx")

Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
2016-04-07 23:05:47 +02:00
Pablo de Lara
99218e76fe examples/l2fwd-crypto: fix string overflow
When parsing crypto device type, the string was being copied
with strcpy(), which could overflow the destination buffer
(which is 32 byte long), so snprintf() should be used instead.

This fixes coverity issue 124575:
/examples/l2fwd-crypto/main.c: 1005 in l2fwd_crypto_parse_args_long_options()
>>>     CID 124575:    (STRING_OVERFLOW)
>>>     You might overrun the 32 byte fixed-size string
"options->string_auth_algo" by copying "optarg" without checking the length.
1005    strcpy(options->string_auth_algo, optarg);

Fixes: 49f79e8648 ("examples/l2fwd-crypto: add missing string initialization")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
2016-04-07 19:52:07 +02:00
Tomasz Kulasek
2c007ea106 app/test: fix array overflow warning with gcc 4.5
DPDK/app/test/test_cryptodev.c:
	In function 'test_snow3g_encrypted_authentication.clone.3':
DPDK/x86_64-ivshmem-linuxapp-gcc/include/rte_memcpy.h:796:14: error:
	array subscript is above array bounds

In lines like:
    rte_memcpy(sym_op->cipher.iv.data, iv, iv_len);
when "iv" is 64 bytes long array, and "iv_len" is "unsigned int",
compiler tries to evaluate also a code for array size larger than 255 bytes
long and reports error "array subscript is above array bounds" in line:
	rte_memcpy.h:796
    rte_mov128((uint8_t *)dst + 128, (const uint8_t *)src + 128);
caused by evaluation to:
    rte_mov128((uint8_t *)sym_op->cipher.iv.data + 128, (const uint8_t *)iv
			+ 128);
where "iv" is 64 bytes long buffer and "iv + 128" point out of it, gcc 4.5.

Using uint8_t as a size of copied block prevents to evaluate in rte_memcpy
code for length bigger than 255, causing the problem.

Fixes: 8bdf665fe6 ("app/test: add SNOW 3G")

Signed-off-by: Tomasz Kulasek <tomaszx.kulasek@intel.com>
Acked-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2016-04-07 19:52:07 +02:00
Ferruh Yigit
e274c5f024 kni: fix possible deadlock
netif_rx() should be used in interrupt context. Replace it with
netif_rx_ni() which is safe to use in process context.

Signed-off-by: Ferruh Yigit <ferruh.yigit@intel.com>
2016-04-07 19:30:16 +02:00
Rich Lane
6fe9e03c38 vhost: enable guest notification only on enabled queues
If the vhost PMD were configured with more queues than the guest, the old
code would segfault in rte_vhost_enable_guest_notification due to a NULL
virtqueue pointer.

Fixes: ee584e9710 ("vhost: add driver on top of the library")

Signed-off-by: Rich Lane <rich.lane@bigswitch.com>
Tested-by: Ciara Loftus <ciara.loftus@intel.com>
Acked-by: Yuanhan Liu <yuanhan.liu@linux.intel.com>
2016-04-07 19:24:17 +02:00
Anatoly Burakov
d6cf31419e ivshmem: avoid infinite loop when concatenating segments
This patch aligns the logic used to check for the presence of
adjacent segments in has_adjacent_segments() with the logic used
in cleanup_segments() when actually deciding to concatenate or
not a pair of segments. Additionally, adjacent segments are
no longer considered overlapping to avoid generating errors for
segments that can happily coexist together.

This fixes an infinite loop that happened when segments where
adjacent in their physical or virtual addresses but not in their
ioremap addresses: has_adjacent_segments() reported the presence
of adjacent segments while cleanup_segments() was not considering
them for concatenation, resulting in an infinite loop since the
result of has_adjacent_segments() is used in the decision to
continue looping in cleanup_segments().

Signed-off-by: David Verbeiren <david.verbeiren@intel.com>
Signed-off-by: Anatoly Burakov <anatoly.burakov@intel.com>
2016-04-07 19:23:44 +02:00
Slawomir Mrozowicz
7d78841754 ethdev: fix unchecked return value
It fix coverity issue:
CID 124557 (#1 of 1): Unchecked return value (CHECKED_RETURN)
check_return: Calling rte_eth_tx_buffer_set_err_callback without
checking return value (as is done elsewhere 6 out of 7 times).

Fixes: d6c99e62c8 ("ethdev: add buffered Tx")

Signed-off-by: Slawomir Mrozowicz <slawomirx.mrozowicz@intel.com>
2016-04-07 19:11:16 +02:00
John McNamara
b0641b6828 doc: fix release notes for 16.04
Fix grammar, spelling and formatting of DPDK 16.04 release notes.

Signed-off-by: John McNamara <john.mcnamara@intel.com>
2016-04-07 18:53:43 +02:00
Pablo de Lara
ba7b86b141 doc: add l2fwd-crypto sample app guide
Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
Acked-by: Declan Doherty <declan.doherty@intel.com>
2016-04-07 18:47:17 +02:00
Adrien Mazarguil
fbd7c90c9c doc: fix nics features matrix for mlx
Enable "other kdrv" because both NICs require kernel support to work.

Unicast and multicast MAC filters are also enabled as both address types can
be filtered on through the MAC add/remove/set callbacks.

Fixes: e86b85ca75 ("doc: fill nics features matrix for mlx")

Signed-off-by: Adrien Mazarguil <adrien.mazarguil@6wind.com>
2016-04-07 18:31:57 +02:00
Wenzhuo Lu
3cd654213b doc: fix nics features matrix for ixgbe
Fixes: 83a4a15404 ("doc: fill nics features matrix for e1000/igb and ixgbe")

Reported-by: Thomas Monjalon <thomas.monjalon@6wind.com>
Signed-off-by: Wenzhuo Lu <wenzhuo.lu@intel.com>
2016-04-07 18:12:01 +02:00
Chen Jing D(Mark)
8d0d7490c8 doc: fill nics features matrix for fm10k
Add feature support list for fm10k, fm10k-vec, fm10kvf and
fm10kvf-vec.

Signed-off-by: Chen Jing D(Mark) <jing.d.chen@intel.com>
2016-04-07 12:33:35 +02:00
Harry van Haaren
1bd6bd060d doc: update multi process memory figure
This patch updates the titles in the multiprocess memory image
to read "Primary Process" and "Secondary Process" instead of
"DPDK Server Process" and "Customer Client Process".

The rest of the image has been converted from PNG to SVG.

Signed-off-by: Harry van Haaren <harry.van.haaren@intel.com>
2016-04-07 12:15:57 +02:00
Pablo de Lara
b7d6510938 doc: add initialization section for crypto vdevs
Explain how to create/initialize virtual crypto PMDs,
through command line and within an application.

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2016-04-06 19:02:01 +02:00
Pablo de Lara
57cfab87be doc: fix typos in crypto titles
Fixes: eec136f3c5 ("aesni_gcm: add driver for AES-GCM crypto operations")
Fixes: 94b0ad8e0a ("null_crypto: add driver for null crypto operations")

Signed-off-by: Pablo de Lara <pablo.de.lara.guarch@intel.com>
2016-04-06 19:00:57 +02:00