/*
   IPLgen (IP List GENerator) v0.1

   Este programa crea una lista de ips del tipo x.x.*.* o x.x.x.* para ser usadas
   por otros programas como por ejemplo nbnbs de Mixter, que fue la causa de que
   esto exista.

     www.despai.es
	skkunk@gmail.com
*/

#include <stdio.h>
#include <string.h>
#define _VERSION "v0.1"

main(int argc, char **argv)
{
 int i,i2;
 int n_p=0; // numero de puntos (x.x.x.x)
 int iplen; // tamaño del patron del rango introducido
 char x;  // actual byte reading
 char tmp_ip[22];

 FILE *f;

 switch(argc) {
 	case 2:
		if((f=fopen("ip.lst","w"))==NULL)
		  exit(-1);
		break;
	case 3: 
		if((f=fopen(argv[2],"w"))==NULL)
		  exit(-1);
		break;
	default:
		printf("\n Sintaxis:\n\n  %s <rango> [salida]\n",argv[0]);
		printf("    * por defecto la salida es \"ip.lst\"\n\n");
		exit(-1);
}


 /* Comprobamos el numero de puntos que existen en la cadena
    pasada como parametro */

 iplen = strlen(argv[1]);
 for(i=0; i<=iplen; i++) {
 	if(argv[1][i] == '.')
 	  n_p++;
 }
 
 switch(n_p) {
 	case 2:
		for(i=0; i<=255; i++) {
		  for(i2=0; i2<=255; i2++) {
		   sprintf(tmp_ip,"%s%i.%i\n",argv[1],i,i2);
		   fputs(tmp_ip,f);
		  }
		}
		break;

	case 3:
		for(i=0; i<=255; i++) {
		  sprintf(tmp_ip,"%s%i\n",argv[1],i);
		  fputs(tmp_ip,f);
		}
		break;

	default:
		printf("\n La sintaxis del <rango> no es correcta\n\n");
		fclose(f);
		exit(-1);
 }
 fclose(f);
 printf("\n IPLgen %s + despai [www.despai.es]\n",_VERSION);
 printf("\n  -> Hecho!\n\n");
}

