Problem with sockets an 2.6.21-rc4 kernel

From: Jose Alberto Reguero
Date: Wed Mar 21 2007 - 14:20:37 EST


I had two python programs, server.py and client.py(attached)

With server.py in a kernel 2.6.21-rc4 x86_64 and client.py in the same
machine, server.py get the message.

With server.py in a kerner 2.6.21-rc4 x86_64 and client.py in another
machine, server.py don't get the message.

The same with the programs in c(attached).

With kernel 2.6.20.3 the programs work well.
Thanks.

Jose Alberto

Attachment: client.py
Description: application/python

#include <sys/socket.h>
#include <netinet/in.h>
#include <string.h>

main()
{
int sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
struct sockaddr_in ClientAddr;
memset(&ClientAddr, 0, sizeof(ClientAddr));
ClientAddr.sin_family = AF_INET;
ClientAddr.sin_addr.s_addr = inet_addr("227.234.253.9");
int port = 15922;
ClientAddr.sin_port = htons((short) port);
char str[] = "Hello, world";
sendto(sock, str, strlen(str), 0, (struct sockaddr *)&ClientAddr, sizeof(ClientAddr));
close(sock);
}
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <string.h>
#include <stdio.h>

main()
{
struct sockaddr_in ServerAddr;
int sock = socket (AF_INET, SOCK_DGRAM, IPPROTO_UDP);
int reuse = 1;
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, &reuse, sizeof(int));
memset(&ServerAddr, 0, sizeof(ServerAddr));
ServerAddr.sin_family = AF_INET;
ServerAddr.sin_addr.s_addr = htonl(INADDR_ANY);
int port = 15922;
ServerAddr.sin_port = htons((short) port);
bind(sock, (struct sockaddr *)&ServerAddr, sizeof(ServerAddr));
struct ip_mreq mreq;
memset(&mreq, 0, sizeof(mreq));
mreq.imr_multiaddr.s_addr = inet_addr("227.234.253.9");
mreq.imr_interface.s_addr = htonl(INADDR_ANY);
setsockopt(sock, IPPROTO_IP, IP_ADD_MEMBERSHIP, &mreq, sizeof(mreq));
char str[100];
memset(&str, 0, sizeof(str));
recv(sock, str, 100, 0);
printf(":%s:\n", str);
close (sock);
}

Attachment: server.py
Description: application/python