Estupendo, ya has conseguido que las autotools funcionen.
Ahora tienes el error de compilación que yo pasé por alto haciendo que una función devolviese un valor fijo. Te explico los pasos con mayor detalle que antes.
Entra al directorio /src dentro de nemesis-1.4, y carga en un editor de texto llano (nada de cosas ni remotamente parecidas a libreoffice y demás familia) el archivo llamado "nemesis-functions.c". Si no sabes a qué me refiero, utiliza nano (nano nemesis-functions.c). En la parte de abajo tiene un pequeño menú con instrucciones de uso. El carácter '^' significa "pulsar la tecla control además de la siguiente", es muy fácil de manejar. Pulsando Control+x te pregunta si quieres guardar antes de salir, te pide confirmación del nombre del archivo y listo.
Una vez cargado el archivo, busca este trozo de código:
/**
* Determine if a source Ethernet address has been specified and fill in the
* ETHERhdr structure if necessary.
*
* @param eth ETHERhdr pointer containing the source Ethernet address
* @param device char pointer containing the Ethernet device name
*
* @return 0 on sucess, -1 on failure
*/
int nemesis_check_link(ETHERhdr *eth, char *device)
{
int i;
struct ether_addr *e = NULL;
struct libnet_link_int l2;
memset(&l2, 0, sizeof(struct libnet_link_int));
#ifdef DEBUG
printf("DEBUG: determining if device %s\n has a hardware address "
"assigned.\n", device);
#endif
if (!memcmp(eth->ether_shost, zero, 6))
{
memset(&l2, 0, sizeof(l2));
if ((e = libnet_get_hwaddr(&l2, device, errbuf)) == NULL) /* Posible origen el error */
return -1;
for (i = 0; i < 6; i++)
eth->ether_shost[i] = e->ether_addr_octet[i]; /* Línea 342 */
return 0;
}
else
return 0;
}
Y borra todo lo que hay entre las llaves de apertura '{' y cierre '}' de la función (la primera y la última), y escribe entre ellas esta única línea: return -1; sin olvidarte del punto y coma; es decir, que te tendría que quedar lo siguiente (nano borra con control+k):
**
* Determine if a source Ethernet address has been specified and fill in the
* ETHERhdr structure if necessary.
*
* @param eth ETHERhdr pointer containing the source Ethernet address
* @param device char pointer containing the Ethernet device name
*
* @return 0 on sucess, -1 on failure
*/
int nemesis_check_link(ETHERhdr *eth, char *device)
{
return -1;
}
Como supongo que guardas el paquete comprimido de nemesis, no te preocupes si te equivocas, lo vuelves a descomprimir y lo reintentas.
Una vez modificada esa función, guarda el archivo y ya puedes salir de src y recompilar.
Lo más probable es que las opciones para ethernet no funcionen, pero supongo que podrás utilizar el resto...
Saludos.