Tengo un problema con la funcion send(). Siempre me retorna -1 y no se porque....
El socket lo creo asi:
Código
int CreateRawSocket(int protocol_to_sniff){
//Crea un raw socket
int rawsock;
if((rawsock = socket(PF_PACKET, SOCK_RAW, htons(protocol_to_sniff)))== -1)
{
}
return rawsock;
}
El bind lo hago asi:
Código
int BindRawSocketToInterface(char *device, int rawsock, int protocol){
//Hace un bind del socket con la interfaz de red
struct sockaddr_ll sll;
struct ifreq ifr;
bzero(&sll, sizeof(sll));
bzero(&ifr, sizeof(ifr));
if((ioctl(rawsock, SIOCGIFINDEX, &ifr)) == -1)
{
}
sll.sll_family = AF_PACKET;
sll.sll_ifindex = ifr.ifr_ifindex;
sll.sll_protocol = htons(protocol);
if((bind(rawsock, (struct sockaddr *)&sll, sizeof(sll)))== -1)
{
}
return 1;
}
Luego creo un char * con los datos a enviar y lo envio con esta funcion:
Código
int SendRawPacket(int rawsock, char *pkt, int pkt_len){
//Envia un raw packet
int sent=0;
if((sent = send(rawsock, pkt, pkt_len,TH_FLAGS)) != pkt_len)
{
/* Error */
return 0;
}
return 1;
}
Y la funcion send() siempre me retorna -1 y no se porque...El socket esta bien creado...lo he mirado con gdb y tengo la variable rawsock=8. Y la variable pkt_len=strlen(pkt)=54
Si el socket esta bien creado y el bind es correcto...¿Por que no me envia los datos?
Gracias, un saludo.


 
  




 Autor
 Autor
		



 En línea
									En línea
								



