Le fichier « app_msgs.c » est le fichier
principal que doit incorporer une application qui veut se connecter et utiliser
l'API_IPsec et ses fonctionnalités directement. Il incorpore le fichier
pour la génération de messages. Ensuite on présente la
liste de fonctions qu'on a développés liées au message
envoyé et la valeur que retourne. On n'explique pas au détail les
fonctions comme dans la section antérieure oil on a déjà
traité très bien le but des messages, les fonctions et les
paramètres de l'API_IPsec. Fonctions pour se
connecter
Type de Message Valeurs de retour
sfd = api_connect (char *addr); APX_SCK_OPEN sfd_local / VKO
ret = api_close (int sfd~local) ; APX_SCK_CLOSE VOK /
VKO
sfd = rem_connect (char *adr~rem); REM_SCK_OPEN
sfd_rem / VKO
ret = rem_close (int sfd~rem); REM_SCK_CLOSE VOK
VKO
ret = api_exit (int sfd~local) ; API_MSG_EXI T VOK /
VKO
Fonctions simples pour gérer l'API_IPsec DB,
et fonctions de synchronisation
API MSG FUNCTION Valeurs de retour
db_add (sfd, table); > DB_ADD id / VKO
db_add_sa (sfd, spi, *src, *dst, mode, type); > DB_ADD +
DB_UPDATE id / VKO
db_getid (sfd, table, spi, *src, *dst); > DB_GE TID id /
VKO
db_copy (sfd, table, id, *idext, *mh); > DB_COPY id2 / VKO
db_read (sfd, table, id, *idext, tag); > DB_READ 1_PARAM /
NULL
db_update (sfd, table, id, *idext, tag, *value); > DB_UPDATE
VOK / VKO
db_delete (sfd, table, id, *idext); > DB_DELE TE
VOK / VKO
db_dump (sfd, table, id, *idext); > DB_DUMP VOK / VKO
db_read_xparam (table, id, *xparams); > DB_READ X_PARAM /
NULL
db_update_xparam (table, id, *xparams); > DB_UPDATE VOK /
VKO
synchro_ipsec (int sfd) API_SYN_IPSEC VOK / VKO
api_re start (int sfd) API_SCK_RES TART VOK / VKO
OPTIONS :
sfd>0 On encapsule le message avec REM_MSG_FUNCTION
pour
l'envoyer à une API_IPsec distante avec laquelle
on a déjà une connexion établie.
idext = (spi, @src, @dst) Structure pour chercher
l'identificateur d'une DB_SA/DB_SP à
partir d'autres paramètres que l'indexent
aussi. Si on l'utilise, on introduit dans le message la fonction DB_GETID avant
de la fonction spécifique à demander à
l'API_IPsec.
> DB_GETID + DB_XX...
mh = (flow, flags) Structure de multihoming que le
message/fonction DB_COPY
peut utiliser. On explique cette structure dans la
section de fonctions pour la mobilité.
Fonctions pour la mobilité
Ces fonctions spéciales modifient ou
dérivent un canal sécurisé (2 SA) dans la machine local et
la machine distante. Puis synchronisent pour faire effectif les changes dans la
SAD. Seulement trois messages sont échangés entre les deux
machines ou noeuds. L'analyse des messages échangés pour chaque
fonction est faite dans la prochaine section des tests avec le
Démonstrateur de l'API_IPsec.
Pour faire l'opération de mobilité ou
de multihoming, à la base les messages font appel aux fonctions de type
API_MSG_FUNCTION. Pour la mobilité la fonction est DB_UPDATE de
l'adresse source et pour le multihoming est DB_COPY d'une SA utilisant la
structure MH (flow, flags) pour remplir la TB_MH.
Les deux opérations utilisent aussi la
fonctionnalité DB_GETID parce que la Mobility_Application n'est pas
obligée à connaître l'identificateur des DB_SA qu'il veut
changer ou utiliser. Une structure « idext » qui contient au
moins un des valeurs <spi, @src, @dst> sert alors à trouver les
associations de sécurité.