Forum de la communauté SFML

Général => Suggestions de nouvelles fonctionnalités => Discussion démarrée par: charlesfire le Août 06, 2012, 05:27:47 pm

Titre: Support de l'ipv6
Posté par: charlesfire le Août 06, 2012, 05:27:47 pm
Ce serais avantageux pour la sfml de rajouter le support de l'ipv6, car l'ipv4 commence à être dépacé...
Titre: Re : Support de l'ipv6
Posté par: Laurent le Août 06, 2012, 06:42:53 pm
Il va se passer encore de nombreuses années avant que l'IPv4 ne soit abandonné, donc y a pas le feu. Mais c'est sûr qu'à un moment donné il faudra le faire.
Titre: Re : Support de l'ipv6
Posté par: Crone123 le Août 06, 2012, 07:49:13 pm
Ah ok, c'est pour ça que l'IPV6 ne fonctionnait pas quand j'ai essayé avec mon jeu....  ;)
Titre: Re : Support de l'ipv6
Posté par: Samuel Proulx le Septembre 18, 2012, 04:08:17 am
Juste petite question comme ça : il y a des fournisseurs d'accès internet qui donne des ipv6 ? Je veux dire qu'au québec, Bell, Vidéotron ou encore Distributel ne fournissent que des adresses ipv4...

Question à titre informatif seulement parce que personnellement, je connais aucun FAI qui donne des ipv6... :)
Titre: Re : Support de l'ipv6
Posté par: minirop le Septembre 18, 2012, 05:25:22 am
en France oui, au moins Free et SFR le permettent. (pour SFR une choix oui/non dans les options de la box)
Titre: Re : Support de l'ipv6
Posté par: Sandburg le Juin 25, 2015, 02:07:54 pm
Bonjour,

C'est la seule entrée à IPV6 que je trouve via la recherche. Le débat est-il clos ou muet depuis 2012 ?

À bientôt,
Sandburg
Titre: Re : Support de l'ipv6
Posté par: Hiura le Juin 25, 2015, 02:40:29 pm
Il y a eut quelques autres messages sur le forum anglais mais au final peu de demandes ont été faites donc personne n'a travaillé dessus. Si tu as du temps à y consacrer, tu peux relancer la discussion sur l'autre forum (plus actif, il faut le dire) et peut-être proposer un patch (http://www.sfml-dev.org/contribute.php#requesting-features) si tout marche bien.  ;)
Titre: Re : Support de l'ipv6
Posté par: Sandburg le Novembre 19, 2016, 10:34:03 pm
Bon, je reviens après avoir utilisé quelques temps SFML dans mon coin. Jusque là, personne n’a proposé de patch pour l’ipv6, donc je me lance.
En première approche, je précise ici certaines choses. Puis en tenant compte de vos remarques, j’irai faire mon pull request en le commentant sur le forum anglais (Si j’ai bien compris, il est plus actif et fait foi).

À ce jour, 1 seul report sur ce sujet, classé rejected :
https://github.com/SFML/SFML/issues/307

État des lieux
Actuellement, SFML (v. 2.3 rev.746bb9c et antérieures) ne supporte pas l’IPv6. C’est à dire que le type sf::IpAddress ainsi que ses interdépendances sont implémentés autour de l’IPv4 uniquement.

Liste des composants touchés :

Différentes approches possibles

Tip : On ne sait pas de quelle structure de stockage on a besoin tant que l’adresse n’est pas saisie et parsée. Donc 2 temps.

Pour comparer les différentes approches possible, j’ai référencé d’autres implémentations dans des libs à forte notoriété :

Comme première mouture, j’opte pour une approche par composition avec des variables membres comme dans boost::asio (ou le futur std::ip).

Use case. Comment utilisera-t-on les nouveaux types ?
Un seul composant IpAddress servira de classe publique pour l’utilisateur. Mais il existera quand même des classes spécifiques v4 et v6 (surement priv). Cette classe globale IpAddress agrégera les types adresse_v4 et adresse_v6.
Lorsqu’il utilisera IpAddress, l’utilisateur devra s’intéresser au type d’adresse dans ses procédures.

Fix au passage
Dans la version actuelle, tester si une adresse est localhost est à la charge de l’utilisateur.
De la forme
my_address == sf::address::LocalHost
Était-ce la bonne approche ? C’est léger et compréhensible. Mais ne respecte pas la norme maintenue par l’IANA. En IPv4, les adresses qui loopback sont de la forme 127.0.0.1/8, c’est à dire la plage d’adresses de 127.0.0.1 à 127.255.255.255 (le /8 voulant dire 8 bits significatifs). Donc si on fixe ce défaut par rapport à la norme, plus moyen de déléguer ce test à l’utilisateur, il faut une méthode isLoopback().
Tandis qu’en IPv6, seule l’adresse ::1 est loopback.

Nommage de cette méthode, localhost vs loopback ?
« localhost » est en général une adresse de l’interface « loopback ». Ils peuvent être et sont souvent interchangeables. Cependant, si on ne check que les adresses et non pas la réalité du réseau, il vaut mieux l’appeler localhost, c’est moins glorifiant, mais techniquement plus juste.

Extension
Il existe aussi les adresses du domaine Unix, le type AF_UNIX (contrairement aux types ip AF_INET et AF_INET6). Il y a aussi AF_IPX et AF_AX25, mais ce sont des niches (Novell et radio émission).
Est-ce qu’on se limite aux types ip ? D’autres libs gèrent au moins le type UNIX en plus.

PS : les libs citées sont sous leur licence respective
Titre: Re : Support de l'ipv6
Posté par: Laurent le Novembre 19, 2016, 11:08:03 pm
Tout d'abord merci de vouloir contribuer, surtout sur ce genre de sujet complètement délaissé.

Tu as l'air de savoir de quoi tu parles, et a priori je ne vois rien d'idiot dans ce que tu proposes. Donc je pense que tu devrais aller poster directement sur le forum anglais, mais avant de commencer à bosser sur une éventuelle implémentation.
Titre: Re : Support de l'ipv6
Posté par: Sandburg le Novembre 27, 2016, 03:13:02 pm
Ok voir le forum anglais http://en.sfml-dev.org/forums/index.php?topic=17671.0