+ WARNING("ping plugin: Ignoring invalid interval %g (%s)", tmp, value);
+ } else if (strcasecmp(key, "Size") == 0) {
+ size_t size = (size_t)atoi(value);
+
+ /* Max IP packet size - (IPv6 + ICMP) = 65535 - (40 + 8) = 65487 */
+ if (size <= 65487) {
+ sfree(ping_data);
+ ping_data = malloc(size + 1);
+ if (ping_data == NULL) {
+ ERROR("ping plugin: malloc failed.");
+ return (1);
+ }
+
+ /* Note: By default oping is using constant string
+ * "liboping -- ICMP ping library <http://octo.it/liboping/>"
+ * which is exactly 56 bytes.
+ *
+ * Optimally we would follow the ping(1) behaviour, but we
+ * cannot use byte 00 or start data payload at exactly same
+ * location, due to oping library limitations. */
+ for (size_t i = 0; i < size; i++) /* {{{ */
+ {
+ /* This restricts data pattern to be only composed of easily
+ * printable characters, and not NUL character. */
+ ping_data[i] = ('0' + i % 64);
+ } /* }}} for (i = 0; i < size; i++) */
+ ping_data[size] = 0;
+ } else
+ WARNING("ping plugin: Ignoring invalid Size %zu.", size);
+ } else if (strcasecmp(key, "Timeout") == 0) {