rew fwd
index
ipv6_cosa ipv6_misc
ipv6_tunnel ipv6_italia
ipv6_info ipv6_varie
 

Varie

 
 

Programmazione

In questa piccola sezione cercherò di far vedere come si può implementare IPv6 nei vari linguaggi.
Cominciamo con il C.
Inizialmente vedremo come poter creare un socket per connetterci ad un server IPv6.
L'esempio più banale e lampante è quello di programmare un bot che si colleghi ad un server irc.
Naturalmente non intendo metterci funzioni per la ircwar e stravaganti parser per interagire con lui (cose presenti in un mio altro progettino :P), il nostro semplice bot si collegherà al server irc, entrerà in una chan, dirà na caxxata e uscirà
Vediamo innanzittutto come si cra un socket ipv6.
Mi sto rivolgendo comunque a persone che hanno una minima conoscenza di C, non spiegherò in dettaglio il codice, se non le parti interessanti.

Socket!

Per prima cosa nel nostro codice C dovremo importare:

#include <sys/types.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netdb.h>

s=socket(PF_INET6, SOCK_STREAM, 0);

Il solito socket tcp dove al posto di PF_INET abbiamo PF_INET6... per ora è semplice :)

La novità è nella struttura struct sockaddr_in6 , che ho chiamato address6 (ho poca fantasia :P), che riempiremo come al solito.
Per fare questo appunto dovremo sapere i "dati" del server, l'indirizzo numerico e la porta

serv = gethostbyname2("host", AF_INET6)

Prima novità, per risolvere l'indirizzo del server useremo la funzione più generale gethostbyname2, in cui appunto specificheremo la famiglia AF_INET6.
serv è il puntatore della struttura hostent. (restituita da gethostbyname2)

memset(&address6,0,sizeof(address6));
memcpy((char *)&address6.sin6_addr,serv->h_addr,serv->h_length);
address6.sin6_family = AF_INET6;
address6.sin6_port = htons(porta);

Ok, a questo punto non rimane che effettuare la connesione al server

connection = connect(s, (struct sockaddr *) &address6, sizeof(address6));

Finita questa parte teorica vediamo che da IPv4 ad IPv6 i cambiamenti sono minimi e se volete maggiori delucidazioni c'è sempre il bellissimo Linux Programmer's Manual in tutte le distro.

Questo è solo un piccolo preambolo, tutto per la programmazione dei socket ipv6 lo trovate sul RFC 2553, sempre su www.rfc.net

A breve pubblicherò un piccolo programma client/server di esempio.