BEM VINDO AO BLOG DO MARCOS CARRARO CRIADOR DO "CARRARO DASHBOARD". MUITO MAIS QUE UM SIMPLES BLOG.

segunda-feira, 28 de abril de 2014

C/C++ Função validar IP faz parte da Rede/Mascara

Buenas,

Segue uma pequena função em C/C++ que valida se o IP x esta na rede Y com a mascara Z.

#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>

//---------------------------------------------------------------------
long ip2long(const char *ip,int mascara, const char *rede){
    int ip_host_long,ip_rede_long,maximo,retorno;

    // Converte o IP do HOST no modo long - clong
    ip_host_long = htonl(inet_addr(ip));
    // Converte o IP da REDE no modo long - min
    ip_rede_long = htonl(inet_addr(rede));

    // Definindo o maximo
    maximo = (ip_rede_long | ((1 << (32 - mascara)) -1));

// Validando
    if(ip_host_long > ip_rede_long && ip_host_long < maximo){
        // Faz parte da rede e da mascara
        retorno = 1;
    } else {
        // Nao faz parte da rede e da mascara
        retorno = 0;
    }

    return retorno;
}


//---------------------------------------------------------------------

int main()
{
    const char *ip;
    int mascara;
    const char *rede;

    mascara = 24;
    rede = "192.168.1.0";
    ip = "192.168.2.3";

    long ip_longo = ip2long(ip,mascara,rede);


    printf("%u\n", ip_longo);


    return 0;
}


Forte abraço
Marcos Carraro


Nenhum comentário:

Postar um comentário

Posts que a turma mais esta lendo...

Posts que a turma mais esta lendo...

Marcos Carraro