Thanks for your help. It was very helpfull. It turned out to be that my payload_length field should be an integer not a char array.
Here is the solution,
struct ping_header
{
char GUID[16];
char Payload_Type;
char TTL;
char Hops;
int Payload_Len; <------------
};
struct ping_header *get_ping_header(void)
{
struct ping_header *p_head;
p_head = (struct ping_header *)malloc(sizeof(struct ping_header));
strcpy(p_head->GUID,"jhwerdkrodmwjydh");
p_head->Payload_Type = '0';
p_head->TTL = '2';
p_head->Hops = '0';
p_head->Payload_Len = 0; <------------
return p_head;
}
But I had another issue. So I was not able to even try the advisory. The clients I received from the GnuWebCaches didn't seem to be accepting me anymore. They generally responded 503 Gnutella unavaible. Is it normal. I guess I am in a ban list or something like that.