#define PING_ERRMSG_LEN 256
-#define PING_DATA "Florian Forster <octo@verplant.org> http://verplant.org/"
-
struct pinghost
{
char *hostname;
double timeout;
int ttl;
int addrfamily;
+ char *data;
char errmsg[PING_ERRMSG_LEN];
icmp4->icmp_id = htons (ph->ident);
icmp4->icmp_seq = htons (ph->sequence);
- strcpy (data, PING_DATA);
+ buflen = 4096 - sizeof (struct icmp);
+ if (obj->data != NULL)
+ strncpy (data, obj->data, buflen);
+ else
+ strncpy (data, PING_DEF_DATA, buflen);
datalen = strlen (data);
buflen = datalen + sizeof (struct icmp);
icmp6->icmp6_id = htons (ph->ident);
icmp6->icmp6_seq = htons (ph->sequence);
- strcpy (data, PING_DATA);
+ buflen = 4096 - sizeof (struct icmp6_hdr);
+ if (obj->data != NULL)
+ strncpy (data, obj->data, buflen);
+ else
+ strncpy (data, PING_DEF_DATA, buflen);
datalen = strlen (data);
buflen = datalen + sizeof (struct icmp6_hdr);
}
break;
+ case PING_OPT_DATA:
+ if (obj->data != NULL)
+ {
+ free (obj->data);
+ obj->data = NULL;
+ }
+ obj->data = strdup ((const char *) value);
+ break;
+
default:
ret = -2;
} /* switch (option) */