Parcourir la source

Initial import from machoke:/usr/local/gitoyen-peers/*

Sebastien Badia il y a 11 ans
commit
74702d7254
24 fichiers modifiés avec 5257 ajouts et 0 suppressions
  1. 20 0
      DOCUMENTATION
  2. 67 0
      Makefile
  3. 30 0
      README
  4. 187 0
      as-update.msg
  5. 107 0
      as20766.epy
  6. 70 0
      as20766.epy.out
  7. 781 0
      as20766.txt
  8. 791 0
      as20766.txt.asc
  9. 58 0
      down.txt
  10. 29 0
      myepython
  11. 115 0
      parsepeers.php
  12. 32 0
      peers.dtd
  13. 1452 0
      peers.xml
  14. 113 0
      peers2bgpConfig.pl
  15. 45 0
      peers2bind.pl
  16. 51 0
      peers2fdnMoniteurConfig.pl
  17. 34 0
      peers2ripe.py
  18. 55 0
      peers2zebra-Visitor.py
  19. 84 0
      peers2zebra.py
  20. 93 0
      peers3zebra.py
  21. 57 0
      relance.mailtpl.txt
  22. 32 0
      to-docbook.xslt
  23. 54 0
      to-latex.xslt
  24. 900 0
      zebra-moniteur.conf

+ 20 - 0
DOCUMENTATION

@@ -0,0 +1,20 @@
+Peerings
+
+La gestion des peerings de gitoyen est centralisée sur machoke dans le dossier /usr/local/gitoyen-peers
+
+Pour ajouter un peer à gitoyen, il faut procéder dans ce sens :
+
+    Modification du fichier peers.xml. Utiliser de préférence un editeur comme emacs avec psgml pour valider à la volée le xml obtenu.
+    lancer make install (en tant que root ou membre du groupe gitoyen)
+    lancer make ripe pour reconstruire l'objet ripe dans as20766.txt.asc (en tant que NON root et avec la clé du NOC dans votre gpg)
+    Insérer dans la config bgp du routeur qui va bien le nouveau peer : telnet bgpd puis insérer les lignes dans la conf (comme un cisco), ne pas oublier le "write memory" et le "/root/save_cfg -a" 
+
+Voici la liste des fichiers de ce dossier et leur utilisation :
+
+    README
+    Makefile Fichier Makefile. Contient les makes "install" et "ripe"
+    as20766.txt Fichier texte contenant la mise à jour de l'objet RIPE de Gitoyen construit par make install
+    as20766.txt.asc Version signée pgp de as20766.txt. construit par make ripe, mais nécessite la clé de gitoyen (demander à root@…) dans ~/.gnupg/
+    peers-IX?-bgpd.conf contient la config bgp pour chaque peering.
+    peers.dtd contient la description du fichier xml qui suit
+    peers.xml contient la liste des peers de gitoyen. C'est ce fichier qu'il faut modifier lorsqu'il y a un nouveau peer. 

+ 67 - 0
Makefile

@@ -0,0 +1,67 @@
+IX=sfinx pouix freeix geix panap
+
+check:
+	@echo = Making check...
+	@nsgmls -s -wxml /usr/share/sgml/declaration/xml.dcl peers.xml
+	@echo = check done.
+
+peers.xml: check
+
+all: install zebra-moniteur.conf ripe-send
+
+install: as20766.txt
+	@echo = Making install...
+	(cd /var/www-gitoyen/routing; make -W peers.wml)
+	for ix in ${IX}; do\
+		./peers2bgpConfig.pl peers.xml $$ix > peers-$$ix-bgpd.conf;\
+		./peers2bind.pl peers.xml $$ix > db.$$ix-peers.gitoyen.net;\
+		cp db.$$ix-peers.gitoyen.net /etc/bind/;\
+		rndc reload $$ix-peers.gitoyen.net;\
+        done
+	@echo = Copying peers.xml to w3
+
+zebra-moniteur.conf: peers.xml peers2fdnMoniteurConfig.pl
+	@echo = Making zebra-moniteur.conf...
+	./peers2fdnMoniteurConfig.pl peers.xml > zebra-moniteur.conf
+	@cp zebra-moniteur.conf /var/www/gitoyen/
+	@echo = zebra-moniteur.conf done.
+
+as20766.txt: as20766.epy peers.xml
+	@echo = Making as20766.txt...
+	./peers2fdnMoniteurConfig.pl peers.xml > zebra-moniteur.conf
+	./myepython < as20766.epy > as20766.txt
+	@echo = as20766.txt done.
+
+ripe: as20766.txt.asc
+
+as20766.txt.asc: as20766.txt
+	@echo = Making as20766.txt.asc...
+	gpg --clearsign --armor --yes --default-key gitoyen $<
+#	  --keyring ~bortzmeyer/.gnupg/pubring.gpg \
+#	  --secret-keyring ~bortzmeyer/.gnupg/secring.gpg $<
+	@echo = Making as20766.txt.asc...
+
+ripe-send: as20766.txt.asc
+	@echo = Making ripe-send...
+	mutt -s "MODIFY KEYWORDS:DIFF" -e 'my_hdr X-NCC-Regid: fr.gitoyen' \
+		auto-dbm@ripe.net < $<
+	@echo = ripe-send done.
+
+peers.dvi: peers.tex
+	latex peers.tex
+
+peers.tex: peers.xml to-latex.xslt
+	xsltproc -o $@ to-latex.xslt peers.xml
+
+peers.db: peers.xml to-docbook.xslt
+	xsltproc -o $@ to-docbook.xslt peers.xml
+
+clean:
+	rm -f *.dvi *.tmp *.aux *.log as20766.txt.asc as20766.txt peers.tex peers.db 
+	rm -f peers*-bgpd.conf db.*-peers.gitoyen.net zebra-moniteur.conf *~
+
+bgp-show:
+	@[ -n "${IX}" ] && echo IX=${IX}
+	@[ -n "${ASN}" ] && echo ASN=${ASN}
+	@./peers2bgpConfig.pl peers.xml ${IX} ${ASN}
+

+ 30 - 0
README

@@ -0,0 +1,30 @@
+Pour ajouter ou changer un "peer", éditez le fichier peers.xml. Il est
+recommandé d'utiliser un éditeur sensible au XML comme Emacs avec le
+mode psgml.
+
+Ensuite, utilisez les commandes suivantes : 
+
+make all 
+	pour creer les fichiers de config bgp et mettre a jour les pages web des Peers
+make ripe 
+	pour creer le fichier signe pgp pour le RIPE (necessite la cle de Gitoyen)
+make ripe-send
+	pour creer la fichier signe pgp pour le RIPE et l'envoyer au RIPE :)
+make clean
+	pour nettoyer ce dossier des vieux machins inutiles.
+
+8<----------------------------------------------------------------------------
+Les infos qu'on a toujours besoin de ressortir :
+
+We are :        Gitoyen
+AS              20766
+Macro           AS-GITOYEN
+Email           peering@gitoyen.net
+Policy          open
+
+Sfinx - 194.68.129.186 sur 10.0.0.61 (gixe-dws4802-12n6-th2-par)
+FreeIX - 213.228.3.249 sur 10.0.0.23 (notux)
+Pouix - 80.67.175.1 sur 10.0.0.23 (notux)
+Panap - 62.35.254.66 sur 10.0.0.16 (giga)
+GEIX - 80.67.163.66 sur 10.0.0.18 (gizo)
+

+ 187 - 0
as-update.msg

@@ -0,0 +1,187 @@
+From: Stephane Bortzmeyer <bortzmeyer@gitoyen.net>
+To: auto-dbm@ripe.net
+Subject: MODIFY AS20766 
+X-NCC-RegID: fr.gitoyen
+
+-----BEGIN PGP SIGNED MESSAGE-----
+
+aut-num:      AS20766
+as-name:      GITOYEN-MAIN-AS
+descr:        The main Autonomous System of Gitoyen (Paris, France).
+admin-c:      SB4267-RIPE
+admin-c:      FC2409-RIPE
+admin-c:      PB401
+tech-c:       GI1036-RIPE
+notify:       noc@gitoyen.net
+mnt-by:       Gitoyen-NCC
+remarks:      --
+remarks:      Open peering policy: just ask peering@gitoyen.net
+remarks:      --
+remarks:      Technical problems or questions: noc@gitoyen.net
+remarks:      --
+remarks:      Looking Glass: http://lookinglass.gitoyen.net/
+remarks:      --
+changed:      noc@gitoyen.net  20020123 
+source:       RIPE
+import:       from AS1299
+              action pref=100;
+              accept ANY
+import:       from AS6461
+              action pref=100;
+              accept ANY
+export:       to AS1299
+              announce AS-GITOYEN
+export:       to AS6461
+              announce AS-GITOYEN
+import:    from AS13049
+     action pref=100;
+     accept AS13049
+export:    to AS13049
+     announce AS-GITOYEN
+import:    from AS8255
+     action pref=100;
+     accept AS8255
+export:    to AS8255
+     announce AS-GITOYEN
+import:    from AS6771
+     action pref=100;
+     accept AS6771
+export:    to AS6771
+     announce AS-GITOYEN
+import:    from AS5089
+     action pref=100;
+     accept AS5089
+export:    to AS5089
+     announce AS-GITOYEN
+import:    from AS13193
+     action pref=100;
+     accept AS13193
+export:    to AS13193
+     announce AS-GITOYEN
+import:    from AS12876
+     action pref=100;
+     accept AS12876
+export:    to AS12876
+     announce AS-GITOYEN
+import:    from AS2200
+     action pref=100;
+     accept AS2200
+export:    to AS2200
+     announce AS-GITOYEN
+import:    from AS5410
+     action pref=100;
+     accept AS5410
+export:    to AS5410
+     announce AS-GITOYEN
+import:    from AS6830
+     action pref=100;
+     accept AS-CHELLO
+export:    to AS6830
+     announce AS-GITOYEN
+import:    from AS6461
+     action pref=100;
+     accept AS6461
+export:    to AS6461
+     announce AS-GITOYEN
+import:    from AS6805
+     action pref=100;
+     accept AS-MWAYS
+export:    to AS6805
+     announce AS-GITOYEN
+import:    from AS3303
+     action pref=100;
+     accept AS3303
+export:    to AS3303
+     announce AS-GITOYEN
+import:    from AS5631
+     action pref=100;
+     accept AS5631
+export:    to AS5631
+     announce AS-GITOYEN
+import:    from AS5496
+     action pref=100;
+     accept AS5496
+export:    to AS5496
+     announce AS-GITOYEN
+import:    from AS13299
+     action pref=100;
+     accept AS13299
+export:    to AS13299
+     announce AS-GITOYEN
+import:    from AS4589
+     action pref=100;
+     accept AS-EASYNET
+export:    to AS4589
+     announce AS-GITOYEN
+import:    from AS6675
+     action pref=100;
+     accept AS6675
+export:    to AS6675
+     announce AS-GITOYEN
+import:    from AS12322
+     action pref=100;
+     accept AS12322
+export:    to AS12322
+     announce AS-GITOYEN
+import:    from AS2486
+     action pref=100;
+     accept AS2486
+export:    to AS2486
+     announce AS-GITOYEN
+import:    from AS8304
+     action pref=100;
+     accept AS8304
+export:    to AS8304
+     announce AS-GITOYEN
+import:    from AS7176
+     action pref=100;
+     accept AS7176
+export:    to AS7176
+     announce AS-GITOYEN
+import:    from AS8228
+     action pref=100;
+     accept AS8228
+export:    to AS8228
+     announce AS-GITOYEN
+import:    from AS9193
+     action pref=100;
+     accept AS9193
+export:    to AS9193
+     announce AS-GITOYEN
+import:    from AS12626
+     action pref=100;
+     accept AS12626
+export:    to AS12626
+     announce AS-GITOYEN
+import:    from AS8332
+     action pref=100;
+     accept AS8332
+export:    to AS8332
+     announce AS-GITOYEN
+import:    from AS1899
+     action pref=100;
+     accept AS1899
+export:    to AS1899
+     announce AS-GITOYEN
+import:    from AS12654
+     action pref=100;
+     accept AS12654
+export:    to AS12654
+     announce AS-GITOYEN
+import:    from AS6678
+     action pref=100;
+     accept AS6678
+export:    to AS6678
+     announce AS-GITOYEN
+
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.0.6 (GNU/Linux)
+Comment: For info see http://www.gnupg.org
+
+iQCVAwUBPE8hO4JORsNuyaVdAQEyCQQAq/baXaL3ypKW2E1zjXWctGs61SgPWfWr
+HXDX3+m0QWWWtgnFoCgJbVVuVj6fbDYYBrTmiEIY6kAFDKmQhKDI6603XkDI5AEA
+2WwDjvrBog+5OG4eMOQYoX5ylwy4v7KlaJBFUsYvhLD2nIhypqufVZx/rcNx3nmX
+yHpBQQq4sLA=
+=slkU
+-----END PGP SIGNATURE-----

+ 107 - 0
as20766.epy

@@ -0,0 +1,107 @@
+aut-num:      AS20766
+as-name:      GITOYEN-MAIN-AS
+descr:        The main Autonomous System of Gitoyen (Paris, France).
+admin-c:      GI1036-RIPE
+tech-c:       GI1036-RIPE
+notify:       noc@gitoyen.net
+mnt-by:       Gitoyen-NCC
+remarks:      --
+remarks:      Open peering policy: just ask peering@gitoyen.net
+remarks:      --
+remarks:      Technical problems or questions: noc@gitoyen.net
+remarks:      --
+remarks:      Looking Glass: http://lookinglass.gitoyen.net/
+remarks:      --
+<:from time import *:>changed:      noc@gitoyen.net <:strftime("%Y%m%d", localtime(time())):>
+source:       RIPE
+import:       from AS6461
+              action pref=100;
+              accept ANY
+export:       to AS6461
+              announce AS-GITOYEN
+remarks: IELO
+import:       from AS29075
+              action pref=1400;
+              accept AS-IELO
+export:       to AS29075
+              announce ANY
+remarks: INFOCLIP
+import:       from AS24776
+              action pref=1400;
+              accept AS-INFOCLIP
+export:       to AS24776
+              announce ANY
+remarks: MWSP
+import:       from AS39180
+              action pref=1400;
+              accept AS-MWSP
+export:       to AS39180
+              announce ANY
+remarks: TALESSA
+import:       from AS31553
+              action pref=1400;
+              accept AS-TALESSA
+export:       to AS31553
+              announce ANY
+remarks: CURSYS
+import:       from AS39389
+              action pref=1400;
+              accept ANY
+export:       to AS39389
+              announce ANY
+remarks: DRI
+import:       from AS6738
+              action pref=1400;
+              accept ANY
+export:       to AS6738
+              announce ANY
+remarks: NOMOTECH
+import:       from AS39886
+              action pref=1400;
+              accept ANY
+export:       to AS39886
+              announce ANY
+remarks: LINAGORA
+import:       from AS50665
+              action pref=1400;
+              accept ANY
+export:       to AS50665
+              announce ANY
+<:
+from xml.dom.minidom import parse
+from xml.dom import Node
+
+peersfile = "/usr/local/gitoyen-peers/peers.xml"
+neighbors = {}
+
+def visit(node):
+    if node.nodeType == Node.ELEMENT_NODE:
+        if node.nodeName == "peer":
+            neighbor = {}
+            for element in node.childNodes:
+                if element.nodeName == "name":
+                    neighbor["name"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "as":
+                    neighbor["as"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "as-set":
+                    neighbor["as-set"] = element.childNodes[0].nodeValue
+        if (not neighbors.has_key(neighbor["name"])):
+            neighbors[neighbor["name"]] = neighbor
+    return None
+    
+tree = parse(peersfile)    
+for peer in tree.documentElement.childNodes:
+    visit(peer)
+for name in neighbors.keys():
+    peer = neighbors[name]
+    print "import:    from AS" + str(peer["as"])
+    print "     action pref=100;"
+    if (peer.has_key("as-set")):
+        print "     accept AS-" + str(peer["as-set"])
+    else:
+        print "     accept AS" + str(peer["as"])
+    print "export:    to AS" + str(peer["as"])
+    print "     announce AS-GITOYEN"
+
+:>
+

+ 70 - 0
as20766.epy.out

@@ -0,0 +1,70 @@
+aut-num:      AS20766
+as-name:      GITOYEN-MAIN-AS
+descr:        The main Autonomous System of Gitoyen (Paris, France).
+
+import:       from AS1299
+              action pref=100;
+              accept ANY
+import:       from AS6461
+              action pref=100;
+              accept ANY
+export:       to AS1299
+              announce AS-GITOYEN
+export:       to AS6461
+              announce AS-GITOYEN
+
+admin-c:      SB4267-RIPE
+admin-c:      FC2409-RIPE
+admin-c:      PB401
+tech-c:       GI1036-RIPE
+notify:       noc@gitoyen.net
+mnt-by:       Gitoyen-NCC
+remarks:      --
+remarks:      Open peering policy: just ask peering@gitoyen.net
+remarks:      --
+remarks:      Technical problems or questions: noc@gitoyen.net
+remarks:      --
+remarks:      Looking Glass: http://lookinglass.gitoyen.net/
+remarks:      --
+changed:      noc@gitoyen.net 20020122
+
+1011734868.7.
+
+<python>
+from xml.dom.ext.reader import Sax
+from xml.dom import Node
+
+peersfile = "/usr/local/gitoyen-peers/peers.xml"
+neighbors = {}
+
+def visit(node):
+    if node.nodeType == Node.ELEMENT_NODE:
+        if node.nodeName == "peer":
+            neighbor = {}
+            for element in node.childNodes:
+                if element.nodeName == "name":
+                    neighbor["name"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "as":
+                    neighbor["as"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "as-set":
+                    neighbor["as-set"] = element.childNodes[0].nodeValue
+        if (not neighbors.has_key(neighbor["name"])):
+            neighbors[neighbor["name"]] = neighbor
+    return None
+
+if __name__ == '__main__':
+    tree = Sax.FromXmlFile(peersfile)    
+    for peer in tree.documentElement.childNodes:
+        visit(peer)
+    for name in neighbors.keys():
+        peer = neighbors[name]
+        print "import:    from AS" + str(peer["as"])
+        print "     action pref=100;"
+        if (peer.has_key("as-set")):
+            print "     accept AS-" + str(peer["as-set"])
+        else:
+            print "     accept AS" + str(peer["as"])
+        print "export:    to AS" + str(peer["as"])
+        print "     announce AS-GITOYEN"
+
+</python>

+ 781 - 0
as20766.txt

@@ -0,0 +1,781 @@
+aut-num:      AS20766
+as-name:      GITOYEN-MAIN-AS
+descr:        The main Autonomous System of Gitoyen (Paris, France).
+admin-c:      GI1036-RIPE
+tech-c:       GI1036-RIPE
+notify:       noc@gitoyen.net
+mnt-by:       Gitoyen-NCC
+remarks:      --
+remarks:      Open peering policy: just ask peering@gitoyen.net
+remarks:      --
+remarks:      Technical problems or questions: noc@gitoyen.net
+remarks:      --
+remarks:      Looking Glass: http://lookinglass.gitoyen.net/
+remarks:      --
+changed:      noc@gitoyen.net  20101125 
+source:       RIPE
+import:       from AS6461
+              action pref=100;
+              accept ANY
+export:       to AS6461
+              announce AS-GITOYEN
+remarks: IELO
+import:       from AS29075
+              action pref=1400;
+              accept AS-IELO
+export:       to AS29075
+              announce ANY
+remarks: INFOCLIP
+import:       from AS24776
+              action pref=1400;
+              accept AS-INFOCLIP
+export:       to AS24776
+              announce ANY
+remarks: MWSP
+import:       from AS39180
+              action pref=1400;
+              accept AS-MWSP
+export:       to AS39180
+              announce ANY
+remarks: TALESSA
+import:       from AS31553
+              action pref=1400;
+              accept AS-TALESSA
+export:       to AS31553
+              announce ANY
+remarks: CURSYS
+import:       from AS39389
+              action pref=1400;
+              accept ANY
+export:       to AS39389
+              announce ANY
+remarks: DRI
+import:       from AS6738
+              action pref=1400;
+              accept ANY
+export:       to AS6738
+              announce ANY
+remarks: NOMOTECH
+import:       from AS39886
+              action pref=1400;
+              accept ANY
+export:       to AS39886
+              announce ANY
+remarks: LINAGORA
+import:       from AS50665
+              action pref=1400;
+              accept ANY
+export:       to AS50665
+              announce ANY
+import:    from AS8708
+     action pref=100;
+     accept AS-RDSNET
+export:    to AS8708
+     announce AS-GITOYEN
+import:    from AS16136
+     action pref=100;
+     accept AS16136
+export:    to AS16136
+     announce AS-GITOYEN
+import:    from AS30126
+     action pref=100;
+     accept AS30126
+export:    to AS30126
+     announce AS-GITOYEN
+import:    from AS30752
+     action pref=100;
+     accept AS30752
+export:    to AS30752
+     announce AS-GITOYEN
+import:    from AS6939
+     action pref=100;
+     accept AS-HURRICANE
+export:    to AS6939
+     announce AS-GITOYEN
+import:    from AS6678
+     action pref=100;
+     accept AS6678
+export:    to AS6678
+     announce AS-GITOYEN
+import:    from AS30889
+     action pref=100;
+     accept AS-WAYCOM
+export:    to AS30889
+     announce AS-GITOYEN
+import:    from AS48920
+     action pref=100;
+     accept AS-TOILE-LIBRE
+export:    to AS48920
+     announce AS-GITOYEN
+import:    from AS12670
+     action pref=100;
+     accept AS-COMPLETELCUSTOMERS
+export:    to AS12670
+     announce AS-GITOYEN
+import:    from AS30972
+     action pref=100;
+     accept AS-CYREALIS
+export:    to AS30972
+     announce AS-GITOYEN
+import:    from AS25463
+     action pref=100;
+     accept AS25463
+export:    to AS25463
+     announce AS-GITOYEN
+import:    from AS8565
+     action pref=100;
+     accept AS-BLUEGIX
+export:    to AS8565
+     announce AS-GITOYEN
+import:    from AS21163
+     action pref=100;
+     accept AS21163
+export:    to AS21163
+     announce AS-GITOYEN
+import:    from AS8784
+     action pref=100;
+     accept AS-MGN
+export:    to AS8784
+     announce AS-GITOYEN
+import:    from AS5089
+     action pref=100;
+     accept AS-NTLI
+export:    to AS5089
+     announce AS-GITOYEN
+import:    from AS8975
+     action pref=100;
+     accept AS-CLARANETFR
+export:    to AS8975
+     announce AS-GITOYEN
+import:    from AS3291
+     action pref=100;
+     accept AS3291
+export:    to AS3291
+     announce AS-GITOYEN
+import:    from AS35830
+     action pref=100;
+     accept AS-SIVIT
+export:    to AS35830
+     announce AS-GITOYEN
+import:    from AS13030
+     action pref=100;
+     accept AS13030
+export:    to AS13030
+     announce AS-GITOYEN
+import:    from AS6320
+     action pref=100;
+     accept AS-TELECOMPLETE
+export:    to AS6320
+     announce AS-GITOYEN
+import:    from AS174
+     action pref=100;
+     accept AS-COGENT
+export:    to AS174
+     announce AS-GITOYEN
+import:    from AS34197
+     action pref=100;
+     accept AS-SPEKA
+export:    to AS34197
+     announce AS-GITOYEN
+import:    from AS31178
+     action pref=100;
+     accept AS31178
+export:    to AS31178
+     announce AS-GITOYEN
+import:    from AS8527
+     action pref=100;
+     accept AS8527
+export:    to AS8527
+     announce AS-GITOYEN
+import:    from AS16080
+     action pref=100;
+     accept AS16080
+export:    to AS16080
+     announce AS-GITOYEN
+import:    from AS9036
+     action pref=100;
+     accept AS-AS-NEURONNEXION
+export:    to AS9036
+     announce AS-GITOYEN
+import:    from AS1257
+     action pref=100;
+     accept AS-SWIPNET
+export:    to AS1257
+     announce AS-GITOYEN
+import:    from AS5410
+     action pref=100;
+     accept AS5410
+export:    to AS5410
+     announce AS-GITOYEN
+import:    from AS25187
+     action pref=100;
+     accept AS-AS-FCV
+export:    to AS25187
+     announce AS-GITOYEN
+import:    from AS2200
+     action pref=100;
+     accept AS2200
+export:    to AS2200
+     announce AS-GITOYEN
+import:    from AS31235
+     action pref=100;
+     accept AS31235
+export:    to AS31235
+     announce AS-GITOYEN
+import:    from AS15444
+     action pref=100;
+     accept AS-NETSERVICES
+export:    to AS15444
+     announce AS-GITOYEN
+import:    from AS7500
+     action pref=100;
+     accept AS7500
+export:    to AS7500
+     announce AS-GITOYEN
+import:    from AS35217
+     action pref=100;
+     accept AS35217
+export:    to AS35217
+     announce AS-GITOYEN
+import:    from AS16276
+     action pref=100;
+     accept AS16276
+export:    to AS16276
+     announce AS-GITOYEN
+import:    from AS31576
+     action pref=100;
+     accept AS31576
+export:    to AS31576
+     announce AS-GITOYEN
+import:    from AS6730
+     action pref=100;
+     accept AS-GLOBAL
+export:    to AS6730
+     announce AS-GITOYEN
+import:    from AS13049
+     action pref=100;
+     accept AS-FRONTIER
+export:    to AS13049
+     announce AS-GITOYEN
+import:    from AS15422
+     action pref=100;
+     accept AS-PPR
+export:    to AS15422
+     announce AS-GITOYEN
+import:    from AS31688
+     action pref=100;
+     accept AS-SPLIO
+export:    to AS31688
+     announce AS-GITOYEN
+import:    from AS12566
+     action pref=100;
+     accept AS-JETMULTIMEDIA
+export:    to AS12566
+     announce AS-GITOYEN
+import:    from AS2486
+     action pref=100;
+     accept AS2486
+export:    to AS2486
+     announce AS-GITOYEN
+import:    from AS12322
+     action pref=100;
+     accept AS-PROXAD
+export:    to AS12322
+     announce AS-GITOYEN
+import:    from AS16128
+     action pref=100;
+     accept AS-AGARIK
+export:    to AS16128
+     announce AS-GITOYEN
+import:    from AS43573
+     action pref=100;
+     accept AS43573
+export:    to AS43573
+     announce AS-GITOYEN
+import:    from AS12868
+     action pref=100;
+     accept AS-DYNEGYEUROPE
+export:    to AS12868
+     announce AS-GITOYEN
+import:    from AS25345
+     action pref=100;
+     accept AS25345
+export:    to AS25345
+     announce AS-GITOYEN
+import:    from AS25286
+     action pref=100;
+     accept AS25286
+export:    to AS25286
+     announce AS-GITOYEN
+import:    from AS29215
+     action pref=100;
+     accept AS-VCOM
+export:    to AS29215
+     announce AS-GITOYEN
+import:    from AS44334
+     action pref=100;
+     accept AS-RTL
+export:    to AS44334
+     announce AS-GITOYEN
+import:    from AS5436
+     action pref=100;
+     accept AS5436
+export:    to AS5436
+     announce AS-GITOYEN
+import:    from AS15412
+     action pref=100;
+     accept AS-GLOBAL
+export:    to AS15412
+     announce AS-GITOYEN
+import:    from AS13193
+     action pref=100;
+     accept AS13193
+export:    to AS13193
+     announce AS-GITOYEN
+import:    from AS8999
+     action pref=100;
+     accept AS8999
+export:    to AS8999
+     announce AS-GITOYEN
+import:    from AS21409
+     action pref=100;
+     accept AS-IKOULA
+export:    to AS21409
+     announce AS-GITOYEN
+import:    from AS44583
+     action pref=100;
+     accept AS-AS-ANDREXEN
+export:    to AS44583
+     announce AS-GITOYEN
+import:    from AS8657
+     action pref=100;
+     accept AS-CPRM
+export:    to AS8657
+     announce AS-GITOYEN
+import:    from AS5089
+     action pref=100;
+     accept AS5089
+export:    to AS5089
+     announce AS-GITOYEN
+import:    from AS12989
+     action pref=100;
+     accept AS-EWEKA
+export:    to AS12989
+     announce AS-GITOYEN
+import:    from AS6805
+     action pref=100;
+     accept AS-TDDE
+export:    to AS6805
+     announce AS-GITOYEN
+import:    from AS3209
+     action pref=100;
+     accept AS-ARCORGLOBAL
+export:    to AS3209
+     announce AS-GITOYEN
+import:    from AS41692
+     action pref=100;
+     accept AS-AS-OPENCARRIER
+export:    to AS41692
+     announce AS-GITOYEN
+import:    from AS31375
+     action pref=100;
+     accept AS31375
+export:    to AS31375
+     announce AS-GITOYEN
+import:    from AS34019
+     action pref=100;
+     accept AS-HIVANE
+export:    to AS34019
+     announce AS-GITOYEN
+import:    from AS28877
+     action pref=100;
+     accept AS28877
+export:    to AS28877
+     announce AS-GITOYEN
+import:    from AS29204
+     action pref=100;
+     accept AS-B3G
+export:    to AS29204
+     announce AS-GITOYEN
+import:    from AS41628
+     action pref=100;
+     accept AS-AS-NEXEN
+export:    to AS41628
+     announce AS-GITOYEN
+import:    from AS29152
+     action pref=100;
+     accept AS-DECKNET-AS
+export:    to AS29152
+     announce AS-GITOYEN
+import:    from AS8304
+     action pref=100;
+     accept AS8304
+export:    to AS8304
+     announce AS-GITOYEN
+import:    from AS8359
+     action pref=100;
+     accept AS-AS-MTU
+export:    to AS8359
+     announce AS-GITOYEN
+import:    from AS8784
+     action pref=100;
+     accept AS8784
+export:    to AS8784
+     announce AS-GITOYEN
+import:    from AS34019
+     action pref=100;
+     accept AS-HIVANE
+export:    to AS34019
+     announce AS-GITOYEN
+import:    from AS25137
+     action pref=100;
+     accept AS-NFSI
+export:    to AS25137
+     announce AS-GITOYEN
+import:    from AS39286
+     action pref=100;
+     accept AS39286
+export:    to AS39286
+     announce AS-GITOYEN
+import:    from AS8554
+     action pref=100;
+     accept AS-TAS
+export:    to AS8554
+     announce AS-GITOYEN
+import:    from AS29639
+     action pref=100;
+     accept AS-EUROCENTER
+export:    to AS29639
+     announce AS-GITOYEN
+import:    from AS20834
+     action pref=100;
+     accept AS-CALADAN
+export:    to AS20834
+     announce AS-GITOYEN
+import:    from AS24776
+     action pref=100;
+     accept AS24776
+export:    to AS24776
+     announce AS-GITOYEN
+import:    from AS9002
+     action pref=100;
+     accept AS-RETN-AS
+export:    to AS9002
+     announce AS-GITOYEN
+import:    from AS20650
+     action pref=100;
+     accept AS20650
+export:    to AS20650
+     announce AS-GITOYEN
+import:    from AS15403
+     action pref=100;
+     accept AS-EUROPEASP
+export:    to AS15403
+     announce AS-GITOYEN
+import:    from AS13237
+     action pref=100;
+     accept AS-LAMBDANET
+export:    to AS13237
+     announce AS-GITOYEN
+import:    from AS30126
+     action pref=100;
+     accept AS30126
+export:    to AS30126
+     announce AS-GITOYEN
+import:    from AS25593
+     action pref=100;
+     accept AS25593
+export:    to AS25593
+     announce AS-GITOYEN
+import:    from AS31031
+     action pref=100;
+     accept AS-AS-TRANSNODE
+export:    to AS31031
+     announce AS-GITOYEN
+import:    from AS35393
+     action pref=100;
+     accept AS-EUROWEB
+export:    to AS35393
+     announce AS-GITOYEN
+import:    from AS29075
+     action pref=100;
+     accept AS-IELO
+export:    to AS29075
+     announce AS-GITOYEN
+import:    from AS28677
+     action pref=100;
+     accept AS-AMEN-FR-AS
+export:    to AS28677
+     announce AS-GITOYEN
+import:    from AS6461
+     action pref=100;
+     accept AS6461
+export:    to AS6461
+     announce AS-GITOYEN
+import:    from AS16211
+     action pref=100;
+     accept AS-STELLA-NET
+export:    to AS16211
+     announce AS-GITOYEN
+import:    from AS34948
+     action pref=100;
+     accept AS-TYPHON
+export:    to AS34948
+     announce AS-GITOYEN
+import:    from AS28956
+     action pref=100;
+     accept AS-TSN
+export:    to AS28956
+     announce AS-GITOYEN
+import:    from AS12682
+     action pref=100;
+     accept AS-LTT
+export:    to AS12682
+     announce AS-GITOYEN
+import:    from AS39600
+     action pref=100;
+     accept AS-AS-EUROSV
+export:    to AS39600
+     announce AS-GITOYEN
+import:    from AS50618
+     action pref=100;
+     accept AS-AS-LIAZO
+export:    to AS50618
+     announce AS-GITOYEN
+import:    from AS12496
+     action pref=100;
+     accept AS-IDNETUK
+export:    to AS12496
+     announce AS-GITOYEN
+import:    from AS15826
+     action pref=100;
+     accept AS15826
+export:    to AS15826
+     announce AS-GITOYEN
+import:    from AS35189
+     action pref=100;
+     accept AS-KAZAAR
+export:    to AS35189
+     announce AS-GITOYEN
+import:    from AS41653
+     action pref=100;
+     accept AS-AS-AQUARAY
+export:    to AS41653
+     announce AS-GITOYEN
+import:    from AS34021
+     action pref=100;
+     accept AS-AS-MULTI-VISP
+export:    to AS34021
+     announce AS-GITOYEN
+import:    from AS33857
+     action pref=100;
+     accept AS33857
+export:    to AS33857
+     announce AS-GITOYEN
+import:    from AS8220
+     action pref=100;
+     accept AS8220
+export:    to AS8220
+     announce AS-GITOYEN
+import:    from AS13273
+     action pref=100;
+     accept AS13273
+export:    to AS13273
+     announce AS-GITOYEN
+import:    from AS25074
+     action pref=100;
+     accept AS-INETBONE
+export:    to AS25074
+     announce AS-GITOYEN
+import:    from AS8586
+     action pref=100;
+     accept AS-REDNET
+export:    to AS8586
+     announce AS-GITOYEN
+import:    from AS8255
+     action pref=100;
+     accept AS8255
+export:    to AS8255
+     announce AS-GITOYEN
+import:    from AS35283
+     action pref=100;
+     accept AS-ADVISEO
+export:    to AS35283
+     announce AS-GITOYEN
+import:    from AS34177
+     action pref=100;
+     accept AS-CELESTE
+export:    to AS34177
+     announce AS-GITOYEN
+import:    from AS5413
+     action pref=100;
+     accept AS-PIPEX
+export:    to AS5413
+     announce AS-GITOYEN
+import:    from AS15703
+     action pref=100;
+     accept AS-TRUESERVER
+export:    to AS15703
+     announce AS-GITOYEN
+import:    from AS12654
+     action pref=100;
+     accept AS12654
+export:    to AS12654
+     announce AS-GITOYEN
+import:    from AS28855
+     action pref=100;
+     accept AS-GALACSYS
+export:    to AS28855
+     announce AS-GITOYEN
+import:    from AS29629
+     action pref=100;
+     accept AS-ACCLD
+export:    to AS29629
+     announce AS-GITOYEN
+import:    from AS35655
+     action pref=100;
+     accept AS-OXYD
+export:    to AS35655
+     announce AS-GITOYEN
+import:    from AS8220
+     action pref=100;
+     accept AS8220
+export:    to AS8220
+     announce AS-GITOYEN
+import:    from AS4513
+     action pref=100;
+     accept AS4513
+export:    to AS4513
+     announce AS-GITOYEN
+import:    from AS34997
+     action pref=100;
+     accept AS-ALIONIS
+export:    to AS34997
+     announce AS-GITOYEN
+import:    from AS24963
+     action pref=100;
+     accept AS-YACAST
+export:    to AS24963
+     announce AS-GITOYEN
+import:    from AS31576
+     action pref=100;
+     accept AS31576
+export:    to AS31576
+     announce AS-GITOYEN
+import:    from AS8399
+     action pref=100;
+     accept AS-ORNIS
+export:    to AS8399
+     announce AS-GITOYEN
+import:    from AS8677
+     action pref=100;
+     accept AS8677
+export:    to AS8677
+     announce AS-GITOYEN
+import:    from AS12876
+     action pref=100;
+     accept AS-TISCALIFR
+export:    to AS12876
+     announce AS-GITOYEN
+import:    from AS15422
+     action pref=100;
+     accept AS-PPR
+export:    to AS15422
+     announce AS-GITOYEN
+import:    from AS16276
+     action pref=100;
+     accept AS16276
+export:    to AS16276
+     announce AS-GITOYEN
+import:    from AS29402
+     action pref=100;
+     accept AS29402
+export:    to AS29402
+     announce AS-GITOYEN
+import:    from AS6774
+     action pref=100;
+     accept AS-BELBONETOPEERS
+export:    to AS6774
+     announce AS-GITOYEN
+import:    from AS29415
+     action pref=100;
+     accept AS-OVANET
+export:    to AS29415
+     announce AS-GITOYEN
+import:    from AS21502
+     action pref=100;
+     accept AS21502
+export:    to AS21502
+     announce AS-GITOYEN
+import:    from AS42
+     action pref=100;
+     accept AS-AS-PCH
+export:    to AS42
+     announce AS-GITOYEN
+import:    from AS5669
+     action pref=100;
+     accept AS-VIA
+export:    to AS5669
+     announce AS-GITOYEN
+import:    from AS42937
+     action pref=100;
+     accept AS42937
+export:    to AS42937
+     announce AS-GITOYEN
+import:    from AS2611
+     action pref=100;
+     accept AS-BELNET
+export:    to AS2611
+     announce AS-GITOYEN
+import:    from AS8190
+     action pref=100;
+     accept AS-VIATEL
+export:    to AS8190
+     announce AS-GITOYEN
+import:    from AS29608
+     action pref=100;
+     accept AS-W2MY
+export:    to AS29608
+     announce AS-GITOYEN
+import:    from AS8839
+     action pref=100;
+     accept AS8839
+export:    to AS8839
+     announce AS-GITOYEN
+import:    from AS24702
+     action pref=100;
+     accept AS-PLACENET
+export:    to AS24702
+     announce AS-GITOYEN
+import:    from AS28855
+     action pref=100;
+     accept AS-GALACSYS
+export:    to AS28855
+     announce AS-GITOYEN
+import:    from AS41157
+     action pref=100;
+     accept AS-OXYMIUM
+export:    to AS41157
+     announce AS-GITOYEN
+import:    from AS4589
+     action pref=100;
+     accept AS-EASYNET
+export:    to AS4589
+     announce AS-GITOYEN
+import:    from AS15436
+     action pref=100;
+     accept AS15436
+export:    to AS15436
+     announce AS-GITOYEN
+import:    from AS15557
+     action pref=100;
+     accept AS-LDCOMNET
+export:    to AS15557
+     announce AS-GITOYEN
+import:    from AS12876
+     action pref=100;
+     accept AS-TISCALIFR
+export:    to AS12876
+     announce AS-GITOYEN
+
+

+ 791 - 0
as20766.txt.asc

@@ -0,0 +1,791 @@
+-----BEGIN PGP SIGNED MESSAGE-----
+Hash: SHA1
+
+aut-num:      AS20766
+as-name:      GITOYEN-MAIN-AS
+descr:        The main Autonomous System of Gitoyen (Paris, France).
+admin-c:      GI1036-RIPE
+tech-c:       GI1036-RIPE
+notify:       noc@gitoyen.net
+mnt-by:       Gitoyen-NCC
+remarks:      --
+remarks:      Open peering policy: just ask peering@gitoyen.net
+remarks:      --
+remarks:      Technical problems or questions: noc@gitoyen.net
+remarks:      --
+remarks:      Looking Glass: http://lookinglass.gitoyen.net/
+remarks:      --
+changed:      noc@gitoyen.net  20101125 
+source:       RIPE
+import:       from AS6461
+              action pref=100;
+              accept ANY
+export:       to AS6461
+              announce AS-GITOYEN
+remarks: IELO
+import:       from AS29075
+              action pref=1400;
+              accept AS-IELO
+export:       to AS29075
+              announce ANY
+remarks: INFOCLIP
+import:       from AS24776
+              action pref=1400;
+              accept AS-INFOCLIP
+export:       to AS24776
+              announce ANY
+remarks: MWSP
+import:       from AS39180
+              action pref=1400;
+              accept AS-MWSP
+export:       to AS39180
+              announce ANY
+remarks: TALESSA
+import:       from AS31553
+              action pref=1400;
+              accept AS-TALESSA
+export:       to AS31553
+              announce ANY
+remarks: CURSYS
+import:       from AS39389
+              action pref=1400;
+              accept ANY
+export:       to AS39389
+              announce ANY
+remarks: DRI
+import:       from AS6738
+              action pref=1400;
+              accept ANY
+export:       to AS6738
+              announce ANY
+remarks: NOMOTECH
+import:       from AS39886
+              action pref=1400;
+              accept ANY
+export:       to AS39886
+              announce ANY
+remarks: LINAGORA
+import:       from AS50665
+              action pref=1400;
+              accept ANY
+export:       to AS50665
+              announce ANY
+import:    from AS8708
+     action pref=100;
+     accept AS-RDSNET
+export:    to AS8708
+     announce AS-GITOYEN
+import:    from AS16136
+     action pref=100;
+     accept AS16136
+export:    to AS16136
+     announce AS-GITOYEN
+import:    from AS30126
+     action pref=100;
+     accept AS30126
+export:    to AS30126
+     announce AS-GITOYEN
+import:    from AS30752
+     action pref=100;
+     accept AS30752
+export:    to AS30752
+     announce AS-GITOYEN
+import:    from AS6939
+     action pref=100;
+     accept AS-HURRICANE
+export:    to AS6939
+     announce AS-GITOYEN
+import:    from AS6678
+     action pref=100;
+     accept AS6678
+export:    to AS6678
+     announce AS-GITOYEN
+import:    from AS30889
+     action pref=100;
+     accept AS-WAYCOM
+export:    to AS30889
+     announce AS-GITOYEN
+import:    from AS48920
+     action pref=100;
+     accept AS-TOILE-LIBRE
+export:    to AS48920
+     announce AS-GITOYEN
+import:    from AS12670
+     action pref=100;
+     accept AS-COMPLETELCUSTOMERS
+export:    to AS12670
+     announce AS-GITOYEN
+import:    from AS30972
+     action pref=100;
+     accept AS-CYREALIS
+export:    to AS30972
+     announce AS-GITOYEN
+import:    from AS25463
+     action pref=100;
+     accept AS25463
+export:    to AS25463
+     announce AS-GITOYEN
+import:    from AS8565
+     action pref=100;
+     accept AS-BLUEGIX
+export:    to AS8565
+     announce AS-GITOYEN
+import:    from AS21163
+     action pref=100;
+     accept AS21163
+export:    to AS21163
+     announce AS-GITOYEN
+import:    from AS8784
+     action pref=100;
+     accept AS-MGN
+export:    to AS8784
+     announce AS-GITOYEN
+import:    from AS5089
+     action pref=100;
+     accept AS-NTLI
+export:    to AS5089
+     announce AS-GITOYEN
+import:    from AS8975
+     action pref=100;
+     accept AS-CLARANETFR
+export:    to AS8975
+     announce AS-GITOYEN
+import:    from AS3291
+     action pref=100;
+     accept AS3291
+export:    to AS3291
+     announce AS-GITOYEN
+import:    from AS35830
+     action pref=100;
+     accept AS-SIVIT
+export:    to AS35830
+     announce AS-GITOYEN
+import:    from AS13030
+     action pref=100;
+     accept AS13030
+export:    to AS13030
+     announce AS-GITOYEN
+import:    from AS6320
+     action pref=100;
+     accept AS-TELECOMPLETE
+export:    to AS6320
+     announce AS-GITOYEN
+import:    from AS174
+     action pref=100;
+     accept AS-COGENT
+export:    to AS174
+     announce AS-GITOYEN
+import:    from AS34197
+     action pref=100;
+     accept AS-SPEKA
+export:    to AS34197
+     announce AS-GITOYEN
+import:    from AS31178
+     action pref=100;
+     accept AS31178
+export:    to AS31178
+     announce AS-GITOYEN
+import:    from AS8527
+     action pref=100;
+     accept AS8527
+export:    to AS8527
+     announce AS-GITOYEN
+import:    from AS16080
+     action pref=100;
+     accept AS16080
+export:    to AS16080
+     announce AS-GITOYEN
+import:    from AS9036
+     action pref=100;
+     accept AS-AS-NEURONNEXION
+export:    to AS9036
+     announce AS-GITOYEN
+import:    from AS1257
+     action pref=100;
+     accept AS-SWIPNET
+export:    to AS1257
+     announce AS-GITOYEN
+import:    from AS5410
+     action pref=100;
+     accept AS5410
+export:    to AS5410
+     announce AS-GITOYEN
+import:    from AS25187
+     action pref=100;
+     accept AS-AS-FCV
+export:    to AS25187
+     announce AS-GITOYEN
+import:    from AS2200
+     action pref=100;
+     accept AS2200
+export:    to AS2200
+     announce AS-GITOYEN
+import:    from AS31235
+     action pref=100;
+     accept AS31235
+export:    to AS31235
+     announce AS-GITOYEN
+import:    from AS15444
+     action pref=100;
+     accept AS-NETSERVICES
+export:    to AS15444
+     announce AS-GITOYEN
+import:    from AS7500
+     action pref=100;
+     accept AS7500
+export:    to AS7500
+     announce AS-GITOYEN
+import:    from AS35217
+     action pref=100;
+     accept AS35217
+export:    to AS35217
+     announce AS-GITOYEN
+import:    from AS16276
+     action pref=100;
+     accept AS16276
+export:    to AS16276
+     announce AS-GITOYEN
+import:    from AS31576
+     action pref=100;
+     accept AS31576
+export:    to AS31576
+     announce AS-GITOYEN
+import:    from AS6730
+     action pref=100;
+     accept AS-GLOBAL
+export:    to AS6730
+     announce AS-GITOYEN
+import:    from AS13049
+     action pref=100;
+     accept AS-FRONTIER
+export:    to AS13049
+     announce AS-GITOYEN
+import:    from AS15422
+     action pref=100;
+     accept AS-PPR
+export:    to AS15422
+     announce AS-GITOYEN
+import:    from AS31688
+     action pref=100;
+     accept AS-SPLIO
+export:    to AS31688
+     announce AS-GITOYEN
+import:    from AS12566
+     action pref=100;
+     accept AS-JETMULTIMEDIA
+export:    to AS12566
+     announce AS-GITOYEN
+import:    from AS2486
+     action pref=100;
+     accept AS2486
+export:    to AS2486
+     announce AS-GITOYEN
+import:    from AS12322
+     action pref=100;
+     accept AS-PROXAD
+export:    to AS12322
+     announce AS-GITOYEN
+import:    from AS16128
+     action pref=100;
+     accept AS-AGARIK
+export:    to AS16128
+     announce AS-GITOYEN
+import:    from AS43573
+     action pref=100;
+     accept AS43573
+export:    to AS43573
+     announce AS-GITOYEN
+import:    from AS12868
+     action pref=100;
+     accept AS-DYNEGYEUROPE
+export:    to AS12868
+     announce AS-GITOYEN
+import:    from AS25345
+     action pref=100;
+     accept AS25345
+export:    to AS25345
+     announce AS-GITOYEN
+import:    from AS25286
+     action pref=100;
+     accept AS25286
+export:    to AS25286
+     announce AS-GITOYEN
+import:    from AS29215
+     action pref=100;
+     accept AS-VCOM
+export:    to AS29215
+     announce AS-GITOYEN
+import:    from AS44334
+     action pref=100;
+     accept AS-RTL
+export:    to AS44334
+     announce AS-GITOYEN
+import:    from AS5436
+     action pref=100;
+     accept AS5436
+export:    to AS5436
+     announce AS-GITOYEN
+import:    from AS15412
+     action pref=100;
+     accept AS-GLOBAL
+export:    to AS15412
+     announce AS-GITOYEN
+import:    from AS13193
+     action pref=100;
+     accept AS13193
+export:    to AS13193
+     announce AS-GITOYEN
+import:    from AS8999
+     action pref=100;
+     accept AS8999
+export:    to AS8999
+     announce AS-GITOYEN
+import:    from AS21409
+     action pref=100;
+     accept AS-IKOULA
+export:    to AS21409
+     announce AS-GITOYEN
+import:    from AS44583
+     action pref=100;
+     accept AS-AS-ANDREXEN
+export:    to AS44583
+     announce AS-GITOYEN
+import:    from AS8657
+     action pref=100;
+     accept AS-CPRM
+export:    to AS8657
+     announce AS-GITOYEN
+import:    from AS5089
+     action pref=100;
+     accept AS5089
+export:    to AS5089
+     announce AS-GITOYEN
+import:    from AS12989
+     action pref=100;
+     accept AS-EWEKA
+export:    to AS12989
+     announce AS-GITOYEN
+import:    from AS6805
+     action pref=100;
+     accept AS-TDDE
+export:    to AS6805
+     announce AS-GITOYEN
+import:    from AS3209
+     action pref=100;
+     accept AS-ARCORGLOBAL
+export:    to AS3209
+     announce AS-GITOYEN
+import:    from AS41692
+     action pref=100;
+     accept AS-AS-OPENCARRIER
+export:    to AS41692
+     announce AS-GITOYEN
+import:    from AS31375
+     action pref=100;
+     accept AS31375
+export:    to AS31375
+     announce AS-GITOYEN
+import:    from AS34019
+     action pref=100;
+     accept AS-HIVANE
+export:    to AS34019
+     announce AS-GITOYEN
+import:    from AS28877
+     action pref=100;
+     accept AS28877
+export:    to AS28877
+     announce AS-GITOYEN
+import:    from AS29204
+     action pref=100;
+     accept AS-B3G
+export:    to AS29204
+     announce AS-GITOYEN
+import:    from AS41628
+     action pref=100;
+     accept AS-AS-NEXEN
+export:    to AS41628
+     announce AS-GITOYEN
+import:    from AS29152
+     action pref=100;
+     accept AS-DECKNET-AS
+export:    to AS29152
+     announce AS-GITOYEN
+import:    from AS8304
+     action pref=100;
+     accept AS8304
+export:    to AS8304
+     announce AS-GITOYEN
+import:    from AS8359
+     action pref=100;
+     accept AS-AS-MTU
+export:    to AS8359
+     announce AS-GITOYEN
+import:    from AS8784
+     action pref=100;
+     accept AS8784
+export:    to AS8784
+     announce AS-GITOYEN
+import:    from AS34019
+     action pref=100;
+     accept AS-HIVANE
+export:    to AS34019
+     announce AS-GITOYEN
+import:    from AS25137
+     action pref=100;
+     accept AS-NFSI
+export:    to AS25137
+     announce AS-GITOYEN
+import:    from AS39286
+     action pref=100;
+     accept AS39286
+export:    to AS39286
+     announce AS-GITOYEN
+import:    from AS8554
+     action pref=100;
+     accept AS-TAS
+export:    to AS8554
+     announce AS-GITOYEN
+import:    from AS29639
+     action pref=100;
+     accept AS-EUROCENTER
+export:    to AS29639
+     announce AS-GITOYEN
+import:    from AS20834
+     action pref=100;
+     accept AS-CALADAN
+export:    to AS20834
+     announce AS-GITOYEN
+import:    from AS24776
+     action pref=100;
+     accept AS24776
+export:    to AS24776
+     announce AS-GITOYEN
+import:    from AS9002
+     action pref=100;
+     accept AS-RETN-AS
+export:    to AS9002
+     announce AS-GITOYEN
+import:    from AS20650
+     action pref=100;
+     accept AS20650
+export:    to AS20650
+     announce AS-GITOYEN
+import:    from AS15403
+     action pref=100;
+     accept AS-EUROPEASP
+export:    to AS15403
+     announce AS-GITOYEN
+import:    from AS13237
+     action pref=100;
+     accept AS-LAMBDANET
+export:    to AS13237
+     announce AS-GITOYEN
+import:    from AS30126
+     action pref=100;
+     accept AS30126
+export:    to AS30126
+     announce AS-GITOYEN
+import:    from AS25593
+     action pref=100;
+     accept AS25593
+export:    to AS25593
+     announce AS-GITOYEN
+import:    from AS31031
+     action pref=100;
+     accept AS-AS-TRANSNODE
+export:    to AS31031
+     announce AS-GITOYEN
+import:    from AS35393
+     action pref=100;
+     accept AS-EUROWEB
+export:    to AS35393
+     announce AS-GITOYEN
+import:    from AS29075
+     action pref=100;
+     accept AS-IELO
+export:    to AS29075
+     announce AS-GITOYEN
+import:    from AS28677
+     action pref=100;
+     accept AS-AMEN-FR-AS
+export:    to AS28677
+     announce AS-GITOYEN
+import:    from AS6461
+     action pref=100;
+     accept AS6461
+export:    to AS6461
+     announce AS-GITOYEN
+import:    from AS16211
+     action pref=100;
+     accept AS-STELLA-NET
+export:    to AS16211
+     announce AS-GITOYEN
+import:    from AS34948
+     action pref=100;
+     accept AS-TYPHON
+export:    to AS34948
+     announce AS-GITOYEN
+import:    from AS28956
+     action pref=100;
+     accept AS-TSN
+export:    to AS28956
+     announce AS-GITOYEN
+import:    from AS12682
+     action pref=100;
+     accept AS-LTT
+export:    to AS12682
+     announce AS-GITOYEN
+import:    from AS39600
+     action pref=100;
+     accept AS-AS-EUROSV
+export:    to AS39600
+     announce AS-GITOYEN
+import:    from AS50618
+     action pref=100;
+     accept AS-AS-LIAZO
+export:    to AS50618
+     announce AS-GITOYEN
+import:    from AS12496
+     action pref=100;
+     accept AS-IDNETUK
+export:    to AS12496
+     announce AS-GITOYEN
+import:    from AS15826
+     action pref=100;
+     accept AS15826
+export:    to AS15826
+     announce AS-GITOYEN
+import:    from AS35189
+     action pref=100;
+     accept AS-KAZAAR
+export:    to AS35189
+     announce AS-GITOYEN
+import:    from AS41653
+     action pref=100;
+     accept AS-AS-AQUARAY
+export:    to AS41653
+     announce AS-GITOYEN
+import:    from AS34021
+     action pref=100;
+     accept AS-AS-MULTI-VISP
+export:    to AS34021
+     announce AS-GITOYEN
+import:    from AS33857
+     action pref=100;
+     accept AS33857
+export:    to AS33857
+     announce AS-GITOYEN
+import:    from AS8220
+     action pref=100;
+     accept AS8220
+export:    to AS8220
+     announce AS-GITOYEN
+import:    from AS13273
+     action pref=100;
+     accept AS13273
+export:    to AS13273
+     announce AS-GITOYEN
+import:    from AS25074
+     action pref=100;
+     accept AS-INETBONE
+export:    to AS25074
+     announce AS-GITOYEN
+import:    from AS8586
+     action pref=100;
+     accept AS-REDNET
+export:    to AS8586
+     announce AS-GITOYEN
+import:    from AS8255
+     action pref=100;
+     accept AS8255
+export:    to AS8255
+     announce AS-GITOYEN
+import:    from AS35283
+     action pref=100;
+     accept AS-ADVISEO
+export:    to AS35283
+     announce AS-GITOYEN
+import:    from AS34177
+     action pref=100;
+     accept AS-CELESTE
+export:    to AS34177
+     announce AS-GITOYEN
+import:    from AS5413
+     action pref=100;
+     accept AS-PIPEX
+export:    to AS5413
+     announce AS-GITOYEN
+import:    from AS15703
+     action pref=100;
+     accept AS-TRUESERVER
+export:    to AS15703
+     announce AS-GITOYEN
+import:    from AS12654
+     action pref=100;
+     accept AS12654
+export:    to AS12654
+     announce AS-GITOYEN
+import:    from AS28855
+     action pref=100;
+     accept AS-GALACSYS
+export:    to AS28855
+     announce AS-GITOYEN
+import:    from AS29629
+     action pref=100;
+     accept AS-ACCLD
+export:    to AS29629
+     announce AS-GITOYEN
+import:    from AS35655
+     action pref=100;
+     accept AS-OXYD
+export:    to AS35655
+     announce AS-GITOYEN
+import:    from AS8220
+     action pref=100;
+     accept AS8220
+export:    to AS8220
+     announce AS-GITOYEN
+import:    from AS4513
+     action pref=100;
+     accept AS4513
+export:    to AS4513
+     announce AS-GITOYEN
+import:    from AS34997
+     action pref=100;
+     accept AS-ALIONIS
+export:    to AS34997
+     announce AS-GITOYEN
+import:    from AS24963
+     action pref=100;
+     accept AS-YACAST
+export:    to AS24963
+     announce AS-GITOYEN
+import:    from AS31576
+     action pref=100;
+     accept AS31576
+export:    to AS31576
+     announce AS-GITOYEN
+import:    from AS8399
+     action pref=100;
+     accept AS-ORNIS
+export:    to AS8399
+     announce AS-GITOYEN
+import:    from AS8677
+     action pref=100;
+     accept AS8677
+export:    to AS8677
+     announce AS-GITOYEN
+import:    from AS12876
+     action pref=100;
+     accept AS-TISCALIFR
+export:    to AS12876
+     announce AS-GITOYEN
+import:    from AS15422
+     action pref=100;
+     accept AS-PPR
+export:    to AS15422
+     announce AS-GITOYEN
+import:    from AS16276
+     action pref=100;
+     accept AS16276
+export:    to AS16276
+     announce AS-GITOYEN
+import:    from AS29402
+     action pref=100;
+     accept AS29402
+export:    to AS29402
+     announce AS-GITOYEN
+import:    from AS6774
+     action pref=100;
+     accept AS-BELBONETOPEERS
+export:    to AS6774
+     announce AS-GITOYEN
+import:    from AS29415
+     action pref=100;
+     accept AS-OVANET
+export:    to AS29415
+     announce AS-GITOYEN
+import:    from AS21502
+     action pref=100;
+     accept AS21502
+export:    to AS21502
+     announce AS-GITOYEN
+import:    from AS42
+     action pref=100;
+     accept AS-AS-PCH
+export:    to AS42
+     announce AS-GITOYEN
+import:    from AS5669
+     action pref=100;
+     accept AS-VIA
+export:    to AS5669
+     announce AS-GITOYEN
+import:    from AS42937
+     action pref=100;
+     accept AS42937
+export:    to AS42937
+     announce AS-GITOYEN
+import:    from AS2611
+     action pref=100;
+     accept AS-BELNET
+export:    to AS2611
+     announce AS-GITOYEN
+import:    from AS8190
+     action pref=100;
+     accept AS-VIATEL
+export:    to AS8190
+     announce AS-GITOYEN
+import:    from AS29608
+     action pref=100;
+     accept AS-W2MY
+export:    to AS29608
+     announce AS-GITOYEN
+import:    from AS8839
+     action pref=100;
+     accept AS8839
+export:    to AS8839
+     announce AS-GITOYEN
+import:    from AS24702
+     action pref=100;
+     accept AS-PLACENET
+export:    to AS24702
+     announce AS-GITOYEN
+import:    from AS28855
+     action pref=100;
+     accept AS-GALACSYS
+export:    to AS28855
+     announce AS-GITOYEN
+import:    from AS41157
+     action pref=100;
+     accept AS-OXYMIUM
+export:    to AS41157
+     announce AS-GITOYEN
+import:    from AS4589
+     action pref=100;
+     accept AS-EASYNET
+export:    to AS4589
+     announce AS-GITOYEN
+import:    from AS15436
+     action pref=100;
+     accept AS15436
+export:    to AS15436
+     announce AS-GITOYEN
+import:    from AS15557
+     action pref=100;
+     accept AS-LDCOMNET
+export:    to AS15557
+     announce AS-GITOYEN
+import:    from AS12876
+     action pref=100;
+     accept AS-TISCALIFR
+export:    to AS12876
+     announce AS-GITOYEN
+
+
+-----BEGIN PGP SIGNATURE-----
+Version: GnuPG v1.4.9 (GNU/Linux)
+
+iD8DBQFM7p6qJ8JSuF9ndqsRAsXZAJ9JMfBNYU2hLkxDn/97yheTaXls1QCgicXK
+VSUv0d1ze8n0VF2TN5IPufo=
+=lDPg
+-----END PGP SIGNATURE-----

+ 58 - 0
down.txt

@@ -0,0 +1,58 @@
+62.35.254.142
+62.35.254.19 
+62.35.254.27 
+62.35.254.61 
+62.35.254.65 
+62.35.254.78 
+62.35.254.90 
+62.35.254.112
+213.228.3.139
+213.228.3.140
+213.228.3.146
+213.228.3.148
+213.228.3.149
+213.228.3.151
+213.228.3.156
+213.228.3.158
+213.228.3.160
+213.228.3.161
+213.228.3.162
+213.228.3.164
+213.228.3.166
+213.228.3.170
+213.228.3.172
+213.228.3.174
+213.228.3.176
+213.228.3.177
+213.228.3.179
+213.228.3.182
+213.228.3.185
+213.228.3.186
+213.228.3.187
+213.228.3.189
+213.228.3.190
+213.228.3.191
+213.228.3.193
+213.228.3.195
+213.228.3.199
+213.228.3.205
+213.228.3.206
+213.228.3.208
+213.228.3.212
+213.228.3.213
+213.228.3.214
+213.228.3.215
+213.228.3.216
+213.228.3.218
+213.228.3.219
+213.228.3.221
+213.228.3.223
+213.228.3.229
+213.228.3.230
+213.228.3.231
+213.228.3.236
+213.228.3.239
+213.228.3.245
+213.228.3.246
+213.228.3.250
+213.228.3.252

+ 29 - 0
myepython

@@ -0,0 +1,29 @@
+#!/usr/bin/python
+
+import sys
+import re
+import __main__
+
+template = re.compile ("(.*?)<:\s*(.*?)\s*:>(.*)", re.DOTALL)
+
+def process (lines):
+    result = template.match (lines)
+    if result:
+        text = result.group(1)
+        code = result.group(2)
+        rest = result.group(3)
+        print text,
+        try:
+            print (eval (code)),
+        except SyntaxError:
+            exec (code + "\n") in __main__.__dict__
+        process (rest)
+    else:
+        print lines,
+        
+line = sys.stdin.readline()
+lines = line
+while line:
+    line = sys.stdin.readline()
+    lines = lines + line
+process (lines)

+ 115 - 0
parsepeers.php

@@ -0,0 +1,115 @@
+<?php
+
+function mail_tpl($from, $to, $template, $fields,$customheaders="") {
+  global $errno,$er;
+  //  $er->log(ERROR_LEVEL_FPUT,"mail_tpl",array("from"=>$from,"to"=>$to,"template"=>$template));
+  //  echo "mailtpl : $from : $to : $template <br>\n";
+  /* Envoi d'un mail avec substitution de patron */
+  $f=@fopen($template,"rb");
+  if ($f) {
+    $subject=trim(fgets($f,1024));
+    $text="";
+    while (!feof($f)) {
+      $text.=fgets($f,1024);
+    }
+    fclose($f);
+
+    reset($fields);
+    while (list($k,$v)=each($fields)) {
+      $subject=str_replace("%%".$k."%%",$v,$subject);
+      $text=str_replace("%%".$k."%%",$v,$text);
+    }
+
+    ini_set('sendmail_from', $from); //Suggested by "Some Guy"
+    return mail($to,$subject,$text,"From: $from\nReply-to: $from".$customheaders);
+  } else {
+    return false;
+  }
+}
+
+
+
+
+function startElement($parser, $name, $attrs) {
+  global $pfend,$pfattrs,$pfelement;
+  //  echo "start: $name \n";
+  if ($name=="PEER") {
+    $pfattrs=array();
+    if ($attrs["IX"]) $pfattrs["IX"]=$attrs["IX"];
+  }
+  $pfelement="";
+}
+
+function endElement($parser, $name) {
+  global $pfend,$pfattrs,$pfelement,$peers;
+  //  echo "end: $name\n";
+  if ($name=="PEER") {
+    $peers[]=$pfattrs;
+    echo  ".";
+  } else {
+    $pfattrs[$name]=$pfelement;
+  }
+}
+
+function dataParser($parser,$data) {
+  global $pfend,$pfattrs,$pfelement;
+  //  echo "data:$data\n";
+  $pfelement.=$data;
+}
+
+function parsehead($file) {
+  global $pfend,$pfattrs,$pfelement;
+  $pfend=false;
+  $pfelement="";
+  $pfattrs=array();
+  $xml_parser = xml_parser_create("ISO-8859-1");
+  xml_set_element_handler($xml_parser, "startElement", "endElement");
+  xml_set_character_data_handler($xml_parser, "dataParser");
+        
+  if (!($fp = fopen($file, "r"))) {
+    die("could not open XML input");
+  }
+        
+  while (($data = fgets($fp, 4096))) {
+    if (!xml_parse($xml_parser, $data, gzeof($fp))) {
+      //                return false;
+                  die(sprintf("XML error: %s at line %d",
+                            xml_error_string(xml_get_error_code($xml_parser)),
+                            xml_get_current_line_number($xml_parser)));
+      }
+  }
+  fclose($fp);
+  xml_parser_free($xml_parser);
+  reset($pfattrs);
+  return $pfattrs;        
+}
+
+echo "Parsing XML file "; flush();
+parsehead("peers.xml");
+echo " done \n";
+
+echo "Searching for down hosts from file down.txt\n";
+$f=fopen("down.txt","rb");
+$down=array();
+while ($s=fgets($f,1024)) {
+  $s=trim($s);
+  $down[$s]=$s;
+}
+fclose($f);
+//print_r($down);
+
+$IPS=array(
+	   "freeix"=>"213.228.3.249",
+	   "sfinx"=>"0",
+	   "panap"=>"62.35.254.66",
+	   );
+
+foreach($peers as $p) {
+  if ($down[$p["IP"]]  && trim($p["CONTACT"])!="") {
+    echo "Sending mail to peer ".$p["IP"]." for IX ".$p["IX"]." named ".$p["NAME"]." at email ".$p["CONTACT"]."\n";
+    $p["GITOYENIP"]=$IPS[$p["IX"]];
+    mail_tpl("noc@gitoyen.net",$p["CONTACT"],"relance.mailtpl.txt",$p);
+  }
+}
+
+?>

+ 32 - 0
peers.dtd

@@ -0,0 +1,32 @@
+<!--
+     Copyright Stephane Bortzmeyer <bortzmeyer@gitoyen.net> 
+  -->
+
+<!ELEMENT peers (peer)+> 
+
+<!ELEMENT peer (name,ip,as,as-set?,comments?,contact*, prefix-in?, prefix-out?, map-in?, map-out?, max-prefixes?)>
+<!ATTLIST peer ix (sfinx|pouix|freeix|geix|panap) #REQUIRED>
+
+<!ELEMENT comments (#PCDATA)>
+<!ELEMENT name (#PCDATA)>
+<!ELEMENT ip (#PCDATA)>
+<!ELEMENT as (#PCDATA)>
+<!ELEMENT as-set (#PCDATA)>
+<!ELEMENT contact (#PCDATA)>
+
+<!ELEMENT prefix-in (#PCDATA)>
+<!ELEMENT prefix-out (#PCDATA)>
+<!ELEMENT map-in (#PCDATA)>
+<!ELEMENT map-out (#PCDATA)>
+
+<!ELEMENT max-prefixes (#PCDATA)>
+
+
+
+
+
+
+
+
+
+

Fichier diff supprimé car celui-ci est trop grand
+ 1452 - 0
peers.xml


+ 113 - 0
peers2bgpConfig.pl

@@ -0,0 +1,113 @@
+#!/usr/bin/perl -w
+
+use strict;
+use XML::Twig;
+use POSIX qw(strftime);
+
+if (scalar(@ARGV) lt 2) {
+  print STDERR "usage: peers2bgpConfig.pl <xml-source> <ix> <as-number>\n";
+  exit -1;
+}
+
+my ($xml_source, $target_ix, $target_asn) = @ARGV;
+
+my $sessions = {};
+
+sub regSession {
+  my ($t, $peer) = @_;
+
+  my $ix = $peer->{'att'}->{'ix'};
+  return unless ($ix eq $target_ix);
+
+  my ($name, $ip, $as, $contact, $max_prefixes, $view, 
+      $as_set, $pfx_in, $pfx_out, $map_in, $map_out) = (
+	$peer->first_child('name')->text,
+	$peer->first_child('ip')->text,
+	$peer->first_child('as')->text,
+	$peer->first_child('contact'),
+	$peer->first_child('max-prefixes'),
+	$peer->first_child('view'),
+	$peer->first_child('as-set'),
+	$peer->first_child('prefix-in'),
+	$peer->first_child('prefix-out'),
+	$peer->first_child('map-in'),
+	$peer->first_child('map-out')
+	);
+
+  if (defined $contact) {
+    $contact = $contact->text;
+  } else {
+    $contact = "nomail";
+  }
+
+  if (defined $target_asn) {
+    if ($target_asn != /^$/) {
+      return unless ($target_asn eq $as);
+    }
+  }
+
+  if ($target_ix =~ /(panap|sfinx)/i) {
+
+    my $pp = $target_ix; 
+    $pp =~ tr/a-z/A-Z/;
+
+    printf STDOUT "neighbor %s remote-as %s\n", $ip, $as;
+    printf STDOUT "neighbor %s description %s %s\n", $ip, $name, $contact;
+    printf STDOUT "neighbor %s shutdown\n", $ip;
+    if ($max_prefixes) {
+      printf STDOUT "neighbor %s maximum-prefix %s\n", 
+	     $ip, $max_prefixes->text;
+    }
+    printf STDOUT "neighbor %s peer-group %s\n", $ip, $pp;
+    if ($pfx_in) {
+      printf STDOUT "neighbor %s prefix-list %s in\n", $ip, $pfx_in->text;
+    }
+    if ($pfx_out) {
+      printf STDOUT "neighbor %s prefix-list %s out\n", $ip, $pfx_out->text;
+    }
+    if ($map_in) {
+      printf STDOUT "neighbor %s route-map %s in\n", $ip, $map_in->text;
+    }
+    if ($map_out) {
+      printf STDOUT "neighbor %s route-map %s out\n", $ip, $map_out->text;
+    }
+    printf STDOUT "no neighbor %s shutdown\n", $ip;
+  } else {
+    printf STDOUT "neighbor %s remote-as %s\n", $ip, $as;
+    printf STDOUT "neighbor %s description %s %s\n", $ip, $name, $contact;
+    printf STDOUT "neighbor %s shutdown\n", $ip;
+    if ($ip =~ /:/o) {
+      printf STDOUT "no neighbor %s activate\n", $ip;
+      printf STDOUT "address-family ipv6\n";
+      printf STDOUT "neighbor %s maximum-prefix %s\n", 
+	     $ip, $max_prefixes ? $max_prefixes->text : 10;
+      printf STDOUT "neighbor %s prefix-list %s in\n", 
+	     $ip, $pfx_in ? $pfx_in->text : "peer-ip6-in";
+      if (defined($pfx_out)) {
+	printf STDOUT "neighbor %s prefix-list %s out\n", $ip, $pfx_out->text;
+      }
+    } else {
+      printf STDOUT "neighbor %s maximum-prefix %s\n", 
+	     $ip, $max_prefixes ? $max_prefixes->text : 100;
+      printf STDOUT "neighbor %s prefix-list %s in\n", 
+	     $ip, $pfx_in ? $pfx_in->text : "pfx-all-but-gitoyen";
+      printf STDOUT "neighbor %s prefix-list %s out\n", 
+	     $ip, $pfx_out ? $pfx_out->text : "pfx-all";
+    }
+    printf STDOUT "neighbor %s route-map %s in\n", 
+	   $ip, $map_in ? $map_in->text : "$ix-in";
+    printf STDOUT "neighbor %s route-map %s out\n", 
+	   $ip, $map_out ? $map_out->text : "$ix-out";
+    printf STDOUT "neighbor %s soft-reconfiguration inbound\n", $ip;
+    if ($ip =~ /:/o) {
+      printf STDOUT "exit-address-family\n";
+    }
+    printf STDOUT "no neighbor %s shutdown\n", $ip;
+  }
+}
+
+my $t = XML::Twig->new( twig_handlers => { 'peer' => \&regSession } );
+$t->parsefile($xml_source);
+
+exit 0;
+

+ 45 - 0
peers2bind.pl

@@ -0,0 +1,45 @@
+#!/usr/bin/perl -w
+
+use strict;
+use XML::Twig;
+use POSIX qw(strftime);
+
+exit -1 unless (scalar(@ARGV) eq 2);
+
+#my $version = strftime "%Y%m%d%H", gmtime();
+my $version = strftime "%s", gmtime();
+
+print "
+\$TTL 7200
+
+@	IN      SOA     ns.gitoyen.net. hostmaster.gitoyen.net. ( $version 21600 3600 3600000 259200 )
+  IN  NS  ns.gitoyen.net.
+  IN  NS  ns2.gitoyen.net.
+@	IN      MX      10 mail.gitoyen.net.
+
+";
+
+my ($filename, $pop) = @ARGV;
+
+sub writeArecord {
+  my ($t, $peer) = @_;
+
+  if ($peer->{'att'}->{'ix'} =~ /$pop/) {
+    my $ip = $peer->first_child('ip');
+    my $name = $peer->first_child('name');
+    my $as = $peer->first_child('as');
+    my $contact = $peer->first_child('contact');
+  
+    if ($ip->text =~ /:/o) {
+      print "AS" . $as->text . "\tIN AAAA ". $ip->text . "\n";
+    } else {
+      print "AS" . $as->text . "\tIN A ". $ip->text . "\n";
+    }
+    print "\tIN TXT " . $contact->text . "\n" if defined $contact;
+    print "\tIN HINFO \"" . $name->text . "\" \"$pop\"\n" if defined $name;
+  }
+}
+
+my $t = XML::Twig->new( twig_handlers => { 'peer' => \&writeArecord } );
+$t->parsefile($filename);
+

+ 51 - 0
peers2fdnMoniteurConfig.pl

@@ -0,0 +1,51 @@
+#!/usr/bin/perl -w
+
+use strict;
+use XML::Twig;
+use POSIX qw(strftime);
+
+exit -1 unless (scalar(@ARGV) eq 1);
+my ($filename) = @ARGV;
+
+my $sessions = {};
+
+sub regSession {
+  my ($t, $peer) = @_;
+  my $name = $peer->first_child('name');
+  
+  $sessions->{$name->text} = []
+    unless exists $sessions->{$name->text};
+  
+  push @{ $sessions->{$name->text} }, {
+    'pop' => $peer->{'att'}->{'ix'},
+    'ip' => $peer->first_child('ip')
+  };
+}
+
+my $t = XML::Twig->new( twig_handlers => { 'peer' => \&regSession } );
+$t->parsefile($filename);
+
+print STDOUT "{\n";
+foreach my $peer (keys %{ $sessions }) {
+  my @ps = @{ $sessions->{$peer} };
+   
+  print STDOUT "  '$peer' => {\n"; 
+  if (scalar(@ps) eq 1) {
+    print STDOUT "    'sort' => 'single',\n"; 
+  } else {
+    print STDOUT "    'sort' => 'any',\n"; 
+  }
+  print STDOUT "    'sessions' => {\n"; 
+  foreach my $pi (@ps) {
+    if ($pi->{'ip'}->text !~ /:/) {
+      print STDOUT "      '".$pi->{'pop'}."' => "; 
+      print STDOUT "'".$pi->{'ip'}->text."',\n"; 
+    }
+  }
+  print STDOUT "    },\n";
+  print STDOUT "  },\n";
+}
+print STDOUT "}\n";
+
+exit 0;
+

+ 34 - 0
peers2ripe.py

@@ -0,0 +1,34 @@
+from xml.dom.ext.reader import Sax
+from xml.dom import Node
+
+peersfile = "/usr/local/gitoyen-peers/peers.xml"
+neighbors = {}
+
+def visit(node):
+    if node.nodeType == Node.ELEMENT_NODE:
+        if node.nodeName == "peer":
+            neighbor = {}
+            for element in node.childNodes:
+                if element.nodeName == "name":
+                    neighbor["name"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "as":
+                    neighbor["as"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "as-set":
+                    neighbor["as-set"] = element.childNodes[0].nodeValue
+        if (not neighbors.has_key(neighbor["name"])):
+            neighbors[neighbor["name"]] = neighbor
+    return None
+
+if __name__ == '__main__':
+    tree = Sax.FromXmlFile(peersfile)    
+    for peer in tree.documentElement.childNodes:
+        visit(peer)
+    for name in neighbors.keys():
+        peer = neighbors[name]
+        print "import:    from AS" + str(peer["as"])
+        print "     action pref=100;"
+        if (peer.has_key("as-set")):
+            print "     accept AS-" + str(peer["as-set"])
+        else:
+            print "     accept AS" + str(peer["as"])
+        

+ 55 - 0
peers2zebra-Visitor.py

@@ -0,0 +1,55 @@
+from xml.dom.ext.reader import PyExpat
+from xml.dom import Node
+from xml.dom.ext import Visitor
+from xml.dom.ext.reader import Sax2
+from xml.dom.ext import ReleaseNode
+
+peersfile = "/usr/local/gitoyen-peers/peers.xml"
+ix = "sfinx"
+
+class NsVisitor(Visitor.Visitor):
+    def visit(self, node):
+        if node.nodeType == Node.ELEMENT_NODE:
+            #if node.nodeName == "peer" and node.getAttribute ('ix') == ix:
+            if node.nodeName == "peer":
+                neighbor = {}
+                for element in node.childNodes:
+                    if element.nodeName == "name":
+                        neighbor["name"] = element.childNodes[0].nodeValue
+                    elif element.nodeName == "ip":
+                        neighbor["ip"] = element.childNodes[0].nodeValue
+                    elif element.nodeName == "as":
+                        neighbor["as"] = element.childNodes[0].nodeValue
+                    elif element.nodeName == "prefix-in":
+                        neighbor["prefix-in"] = element.childNodes[0].nodeValue
+
+                print "neighbor ", neighbor["ip"], \
+                      " description ", neighbor["name"]
+                print "neighbor ", neighbor["ip"], \
+                      " remote-as ", neighbor["as"]
+                print "neighbor ", neighbor["ip"], "soft-reconfiguration inbound"
+                if neighbor.has_key("prefix-in"):
+                    print "neighbor ", neighbor["ip"], "prefix-list ", \
+                          neighbor["prefix-in"], " in"
+                else:
+                    print "neighbor ", neighbor["ip"], "prefix-list peer-in in"
+                print "neighbor ", neighbor["ip"], "prefix-list announce-out out"
+                print "neighbor ", neighbor["ip"], "filter-list 1 out"
+                print "neighbor ", neighbor["ip"],  "route-map " + ix + "-in in"
+                print ""
+        return None
+
+def Walk(xml_dom_object):
+
+    visitor = NsVisitor()
+    walker = Visitor.Walker(visitor, xml_dom_object)
+    walker.run()
+
+if __name__ == '__main__':
+    import sys
+    reader = PyExpat.Reader()
+    xml_dom_object = reader.fromUri(peersfile)
+    print "! Peers at " + ix
+    Walk(xml_dom_object)
+    reader.releaseNode(xml_dom_object)
+

+ 84 - 0
peers2zebra.py

@@ -0,0 +1,84 @@
+import sys
+import re
+from xml.dom.minidom import parse
+from xml.dom import Node
+
+peersfile = "/usr/local/gitoyen-peers/peers.xml"
+default_max_prefixes = 1000
+
+def visit(node):
+    if node.nodeType == Node.ELEMENT_NODE:
+        if node.nodeName == "peer" and node.getAttribute ('ix') == ix:
+            neighbor = {}
+            for element in node.childNodes:
+                if element.nodeName == "name":
+                    neighbor["name"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "ip":
+                    neighbor["ip"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "as":
+                    neighbor["as"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "prefix-in":
+                    neighbor["prefix-in"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "prefix-out":
+                    neighbor["prefix-out"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "map-in":
+                    neighbor["map-in"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "map-out":
+                    neighbor["map-out"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "max-prefixes":
+                    neighbor["max-prefixes"] = element.childNodes[0].nodeValue
+
+            if re.search (":", neighbor["ip"]):
+                # IPv6
+                neighbor_tag = "ipv6 bgp neighbor "
+                peer_in = "peer-ip6-in"
+                announce_out = "announce-ip6-out"
+            else:
+                neighbor_tag = "neighbor "
+                peer_in = "peer-in"
+                announce_out = "announce-out"
+            print neighbor_tag, neighbor["ip"], \
+                  " remote-as ", neighbor["as"]
+            print neighbor_tag, neighbor["ip"], \
+                  " description ", neighbor["name"]
+            print neighbor_tag, neighbor["ip"], "soft-reconfiguration inbound"
+            if neighbor.has_key("prefix-in"):
+                print neighbor_tag, neighbor["ip"], "prefix-list ", \
+                      neighbor["prefix-in"], " in"
+            else:
+                print neighbor_tag, neighbor["ip"], "prefix-list ", peer_in, " in"
+            if neighbor.has_key("prefix-out"):
+                print neighbor_tag, neighbor["ip"], "prefix-list ", \
+                      neighbor["prefix-out"], " out"
+            else:
+                print neighbor_tag, neighbor["ip"], "prefix-list ", announce_out, " out"
+                print neighbor_tag, neighbor["ip"], "filter-list 1 out"
+            if neighbor.has_key("map-in"):
+                print neighbor_tag, neighbor["ip"], "route-map ", \
+                      neighbor["map-in"], " in"
+            else:
+                print neighbor_tag, neighbor["ip"],  "route-map " + ix + "-in in"
+            if not re.search (":", neighbor["ip"]): # max-prefixes not supported for IPv6?
+                if not neighbor.has_key("max-prefixes"):
+                    max_prefixes = default_max_prefixes
+                else:
+                    max_prefixes = neighbor["max-prefixes"]
+                print neighbor_tag, neighbor["ip"], "maximum-prefix ", max_prefixes
+            print ""
+    return None
+
+if __name__ == '__main__':
+    tree = parse(peersfile)
+    try:
+        ix = sys.argv[1]
+    except IndexError:
+        sys.stderr.write ("Usage: " + sys.argv[0] + " ix\n")
+        sys.exit(1)
+    print "! Peers at " + ix
+    print "! Do NOT edit by hand. Edit ",
+    print str(peersfile) + " on machoke instead."
+    print ""
+    for peer in tree.documentElement.childNodes:
+        visit(peer)
+
+

+ 93 - 0
peers3zebra.py

@@ -0,0 +1,93 @@
+import sys
+import re
+#from xml.dom.ext.reader import Sax
+import xml.sax
+from xml.dom import Node
+
+peersfile = "/usr/local/gitoyen-peers/peers.xml"
+default_max_prefixes = 1000
+
+def visit(node):
+    if node.nodeType == Node.ELEMENT_NODE:
+        if node.nodeName == "peer" and node.getAttribute ('ix') == ix:
+            neighbor = {}
+	    neighbor["map-in"] = []
+	    neighbor["map-out"] = []
+            for element in node.childNodes:
+                if element.nodeName == "name":
+                    neighbor["name"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "ip":
+                    neighbor["ip"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "as":
+                    neighbor["as"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "prefix-in":
+                    neighbor["prefix-in"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "prefix-out":
+                    neighbor["prefix-out"] = element.childNodes[0].nodeValue
+                elif element.nodeName == "map-in":
+                    neighbor["map-in"] += [ element.childNodes[0].nodeValue ]
+                elif element.nodeName == "map-out":
+                    neighbor["map-out"] += [ element.childNodes[0].nodeValue ]
+                elif element.nodeName == "max-prefixes":
+                    neighbor["max-prefixes"] = element.childNodes[0].nodeValue
+
+            if re.search (":", neighbor["ip"]):
+                # IPv6
+                neighbor_tag = "ipv6 bgp neighbor "
+                peer_in = "peer-ip6-in"
+                announce_out = "announce-ip6-out"
+            else:
+                neighbor_tag = "neighbor "
+                peer_in = "pfx-all-but-gitoyen"
+                peer_out = "pfx-all"
+                announce_out = "announce-out"
+            print neighbor_tag, neighbor["ip"], \
+                  " remote-as ", neighbor["as"]
+            print neighbor_tag, neighbor["ip"], \
+                  " description ", neighbor["name"]
+            print neighbor_tag, neighbor["ip"], "soft-reconfiguration inbound"
+            if neighbor.has_key("prefix-in"):
+                print neighbor_tag, neighbor["ip"], "prefix-list ", \
+                      neighbor["prefix-in"], " in"
+            else:
+                print neighbor_tag, neighbor["ip"], "prefix-list ", peer_in, " in"
+            if neighbor.has_key("prefix-out"):
+                print neighbor_tag, neighbor["ip"], "prefix-list ", \
+                      neighbor["prefix-out"], " out"
+            else:
+                print neighbor_tag, neighbor["ip"], "prefix-list ", \
+		      peer_out, " out"
+            if len(neighbor["map-in"]) != 0:
+                for map in neighbor["map-in"]:
+		    print neighbor_tag, neighbor["ip"], "route-map ", map, " in"
+            else:
+                print neighbor_tag, neighbor["ip"],  "route-map " + ix + "-in in"
+            if len(neighbor["map-out"]) != 0:
+                for map in neighbor["map-out"]:
+                    print neighbor_tag, neighbor["ip"], "route-map ", map, " out"
+            else:
+                print neighbor_tag, neighbor["ip"],  "route-map " + ix + "-out out"
+            if not re.search (":", neighbor["ip"]): # max-prefixes not supported for IPv6?
+                if not neighbor.has_key("max-prefixes"):
+                    max_prefixes = default_max_prefixes
+                else:
+                    max_prefixes = neighbor["max-prefixes"]
+                print neighbor_tag, neighbor["ip"], "maximum-prefix ", max_prefixes
+            print ""
+    return None
+
+if __name__ == '__main__':
+    tree = Sax.FromXmlFile(peersfile)
+    try:
+        ix = sys.argv[1]
+    except IndexError:
+        sys.stderr.write ("Usage: " + sys.argv[0] + " ix\n")
+        sys.exit(1)
+    print "! Peers at " + ix
+    print "! Do NOT edit by hand. Edit ",
+    print str(peersfile) + " on machoke instead."
+    print ""
+    for peer in tree.documentElement.childNodes:
+        visit(peer)
+
+

+ 57 - 0
relance.mailtpl.txt

@@ -0,0 +1,57 @@
+Restarting a peering session - Relance d'une session de peering
+
+(English version below)
+Bonjour,
+
+Vous avez a ce jour une session de peering avec Gitoyen.
+Cette session de peering sur le point d'echange du %%IX%% est tombee a ce jour.
+Pourriez-vous la relancer (clear) ou verifier sa configuration de votre cote ? 
+Nous vous rappelons nos parametres et les votres : 
+
+Nos parametres : 
+    Operateur : Gitoyen
+    Email de contact : noc@gitoyen.net
+    AS : AS20766
+    AS-SET : AS-GITOYEN
+    Adresse IP %%IX%% : %%GITOYENIP%%
+    Max-Prefix recommande : 20
+Vos parametres : 
+    Operateur : %%NAME%%
+    AS : %%AS%%
+    Adresse IP %%IX%% : %%IP%%
+
+Si vos parametres de session ont change, n'hesitez pas a nous contacter.
+Merci d'avance pour votre collaboration,
+Bien cordialement,
+
+Benjamin Sonntag
+Noc Gitoyen
+
+----------------------------------------
+
+Dear Sir,
+
+We (Gitoyen) currently have a peering session with you.
+This session is currently not running at %%IX%% exchange point.
+Would you please restart it (clear) or check its configuration?
+Your parameters and  our parameters at this IX are shown below: 
+
+Our parameters: 
+    Operator: Gitoyen
+    Contact Email: noc@gitoyen.net
+    AS: AS20766
+    AS-SET: AS-GITOYEN
+    %%IX%% IP Address: %%GITOYENIP%%
+    Recommended Max-Prefix: 20
+Your parameters: 
+    Operator: %%NAME%%
+    AS: %%AS%%
+    %%IX%% IP Address: %%IP%%
+
+If your session parameters are not the one we have, please contact us.
+Thanks for your cooperation,
+
+Best Regards,
+
+Benjamin Sonntag
+Noc Gitoyen

+ 32 - 0
to-docbook.xslt

@@ -0,0 +1,32 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version='1.0'>
+
+  <xsl:output method="xml"
+    doctype-system="dtd/docbook-xml/docbookx.dtd" 
+    doctype-public="-//Norman Walsh//DTD DocBk XML V3.1//EN"
+    indent="yes"/>
+
+  <xsl:template match="/">
+    <table>
+      <title>Gitoyen peers</title>
+      <tgroup cols="4">
+	<tbody>
+	  <xsl:apply-templates/>
+	</tbody>
+      </tgroup>
+    </table>
+  </xsl:template>
+  
+  <xsl:template match="/peers/peer">
+    <row>
+      <entry><xsl:value-of select="name"/></entry>
+      <entry><xsl:value-of select="@ix"/></entry>
+      <entry><xsl:value-of select="as"/></entry>
+      <entry><xsl:value-of select="contact"/></entry>
+      <entry><xsl:value-of select="ip"/></entry>
+    </row>
+  </xsl:template>
+
+</xsl:stylesheet>
+

+ 54 - 0
to-latex.xslt

@@ -0,0 +1,54 @@
+<?xml version='1.0'?>
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+                version='1.0'>
+
+  <xsl:output method="text"/>
+
+  <xsl:strip-space elements="*"/>
+
+  <xsl:template match="/">
+\documentclass[a4paper,11pt]{article}
+\setlength{\oddsidemargin}{0cm}
+\setlength{\evensidemargin}{0cm}
+\setlength{\topmargin}{0cm}
+\setlength{\headheight}{0cm}
+\setlength{\headsep}{0cm}
+\usepackage{url}
+\usepackage{supertabular}
+\usepackage{palatino}
+\title{Gitoyen peers}
+\author{Stephane Bortzmeyer, \url{bortzmeyer@gitoyen.net}}
+\begin{document}
+\sloppy
+\maketitle
+
+\center{\textbf{Generated by the XSL tool <xsl:value-of
+      select="system-property('xsl:vendor')"/> (\url{<xsl:value-of
+      select="system-property('xsl:vendor-url')"/>})}}
+
+
+\begin{supertabular}{|p{4.5cm}|l|c|p{5.25cm}|c|}
+\hline
+\textbf{Name}&amp;\textbf{IXP}&amp;\textbf{AS}&amp;\textbf{Contact}&amp;\textbf{IP address}\\
+\hline\hline
+    <xsl:apply-templates/>
+    \end{supertabular}
+    \end{document}
+  </xsl:template>
+  
+  <xsl:template match="/peers/peer">
+    <xsl:value-of select="name"/>
+&amp;
+    <xsl:value-of select="@ix"/>
+&amp;
+    <xsl:value-of select="as"/>
+&amp;
+\url{<xsl:value-of select="contact"/>}
+&amp;
+    <xsl:value-of select="ip"/>
+\\
+\hline
+  </xsl:template>
+
+</xsl:stylesheet>
+

+ 900 - 0
zebra-moniteur.conf

@@ -0,0 +1,900 @@
+{
+  'Celeste' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.144',
+    },
+  },
+  'Eweka' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.176',
+    },
+  },
+  'Frontier Online' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.191',
+      'freeix' => '213.228.3.248',
+    },
+  },
+  'Above.net/Metromedia' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.201',
+    },
+  },
+  'Poliris' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.205',
+    },
+  },
+  'INIT 7' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.94',
+    },
+  },
+  'CTN1' => {
+    'sort' => 'any',
+    'sessions' => {
+      'pouix' => '80.67.175.42',
+      'freeix' => '213.228.3.190',
+    },
+  },
+  'OvaNet' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.142',
+      'freeix' => '213.228.3.195',
+    },
+  },
+  'ReTN' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.138',
+    },
+  },
+  'Kazaar' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.120',
+      'pouix' => '80.67.175.50',
+      'panap' => '62.35.254.33',
+    },
+  },
+  'TrueServer' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.218',
+    },
+  },
+  'Alionis' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.126',
+    },
+  },
+  'Fluxus' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.240',
+    },
+  },
+  'Tiscali' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.230',
+    },
+  },
+  'e-i.com' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.184',
+    },
+  },
+  'Nerim' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.181',
+      'freeix' => '213.228.3.251',
+    },
+  },
+  'AFNIC' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.238',
+    },
+  },
+  'Telecomplete' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.112',
+    },
+  },
+  'OpenWeb' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.216',
+    },
+  },
+  'DyneGy Europe' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.169',
+    },
+  },
+  'Globix' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.214',
+    },
+  },
+  'Skiwebcenter' => {
+    'sort' => 'single',
+    'sessions' => {
+      'pouix' => '80.67.175.11',
+    },
+  },
+  'Galacsys' => {
+    'sort' => 'single',
+    'sessions' => {
+      'pouix' => '80.67.175.9',
+    },
+  },
+  'NTL Internet' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.186',
+    },
+  },
+  'multi-visp' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.93',
+    },
+  },
+  'Lixium' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.59',
+    },
+  },
+  'Free/Proxad' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.223',
+      'freeix' => '213.228.3.250',
+    },
+  },
+  'PPR' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.133',
+    },
+  },
+  'EURO-WEB' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.52',
+    },
+  },
+  'Ovh' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.244',
+    },
+  },
+  'Ovea' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.114',
+    },
+  },
+  'LambdaNet' => {
+    'sort' => 'any',
+    'sessions' => {
+      'freeix' => '213.228.3.243',
+      'panap' => '62.35.254.30',
+    },
+  },
+  'VIA Networks' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.204',
+    },
+  },
+  'ARCOR' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.139',
+      'sfinx' => '194.68.129.155',
+    },
+  },
+  'Deine' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.219',
+    },
+  },
+  'BlueGix' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.185',
+    },
+  },
+  'NFSi' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.137',
+    },
+  },
+  'PSInet Europe' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.158',
+    },
+  },
+  'Metaboli' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.151',
+    },
+  },
+  'Pipex' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.215',
+    },
+  },
+  'COLT TELECOM' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.239',
+    },
+  },
+  'Placenet' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.223',
+    },
+  },
+  'Sivit' => {
+    'sort' => 'any',
+    'sessions' => {
+      'pouix' => '80.67.175.48',
+      'freeix' => '213.228.3.140',
+      'geix' => '80.67.163.73',
+    },
+  },
+  'Belnet' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.183',
+    },
+  },
+  'CYREALIS' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.146',
+      'pouix' => '80.67.175.16',
+      'freeix' => '213.228.3.175',
+    },
+  },
+  'M-ROOT' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.148',
+    },
+  },
+  'Eliott Ness' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.76',
+    },
+  },
+  'MOGEIX' => {
+    'sort' => 'any',
+    'sessions' => {
+      'pouix' => '80.67.175.2',
+      'geix' => '80.67.163.1',
+    },
+  },
+  'Speka' => {
+    'sort' => 'single',
+    'sessions' => {
+      'pouix' => '80.67.175.51',
+    },
+  },
+  'RIPE' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.38',
+    },
+  },
+  'Viatel' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.156',
+      'freeix' => '213.228.3.194',
+    },
+  },
+  'OVH' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.144',
+    },
+  },
+  'Aquaray' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.105',
+    },
+  },
+  'Agarik' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.207',
+    },
+  },
+  'Caladan' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.182',
+    },
+  },
+  'Pinault Printemps Redoute' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.201',
+    },
+  },
+  'Core ISP' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.161',
+    },
+  },
+  'France citevision' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.177',
+    },
+  },
+  'Easynet' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.225',
+      'sfinx' => '194.68.129.226',
+      'freeix' => '213.228.3.226',
+    },
+  },
+  'Internet-FR' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.230',
+      'freeix' => '213.228.3.236',
+    },
+  },
+  'Noos' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.253',
+    },
+  },
+  'Witbe' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.140',
+    },
+  },
+  'Absolight' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.121',
+      'pouix' => '80.67.175.57',
+      'freeix' => '213.228.3.192',
+      'panap' => '62.35.254.42',
+    },
+  },
+  'IPERCAST' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.213',
+    },
+  },
+  'Jet Multimedia' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.133',
+    },
+  },
+  'NetServices' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.156',
+    },
+  },
+  'PCH/42' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.139',
+    },
+  },
+  'Renater' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.102',
+      'sfinx' => '194.68.129.103',
+    },
+  },
+  'Atos Origin Multimedia' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.229',
+    },
+  },
+  'ORNIS' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.246',
+    },
+  },
+  'France Teaser' => {
+    'sort' => 'any',
+    'sessions' => {
+      'freeix' => '213.228.3.235',
+      'panap' => '62.35.254.96',
+    },
+  },
+  'IDNET-UK' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.167',
+    },
+  },
+  'OXYMIUM' => {
+    'sort' => 'any',
+    'sessions' => {
+      'pouix' => '80.67.175.18',
+      'panap' => '62.35.254.71',
+    },
+  },
+  'GalacSYS' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.211',
+    },
+  },
+  'Azuria' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.212',
+    },
+  },
+  'TYPHON' => {
+    'sort' => 'single',
+    'sessions' => {
+      'pouix' => '80.67.175.17',
+    },
+  },
+  'V-Com Interactive' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.199',
+    },
+  },
+  'Liazo' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.174',
+    },
+  },
+  'opencarrier' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.147',
+    },
+  },
+  'Cogent' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.164',
+      'freeix' => '213.228.3.187',
+    },
+  },
+  'Transnode' => {
+    'sort' => 'any',
+    'sessions' => {
+      'freeix' => '213.228.3.170',
+      'panap' => '62.35.254.45',
+    },
+  },
+  'Colt' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.224',
+    },
+  },
+  'MESH Solutions' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.139',
+    },
+  },
+  'T-online/Grolier/Club-internet' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.219',
+      'freeix' => '213.228.3.231',
+      'panap' => '62.35.254.1',
+    },
+  },
+  'OXYD' => {
+    'sort' => 'single',
+    'sessions' => {
+      'pouix' => '80.67.175.49',
+    },
+  },
+  'Waycom' => {
+    'sort' => 'any',
+    'sessions' => {
+      'pouix' => '80.67.175.13',
+      'freeix' => '213.228.3.169',
+    },
+  },
+  'Avence' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.172',
+    },
+  },
+  'Amen' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.189',
+    },
+  },
+  'Celeonet' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.83',
+    },
+  },
+  'B3G-Telecom' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.178',
+    },
+  },
+  'Libertysurf/Infonie/NoneNetwork' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.233',
+    },
+  },
+  'ACCLD' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.174',
+    },
+  },
+  'NC Numericable' => {
+    'sort' => 'any',
+    'sessions' => {
+      'freeix' => '213.228.3.217',
+      'panap' => '62.35.254.25',
+    },
+  },
+  'SdV Plurimedia' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.247',
+    },
+  },
+  'MGN' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.228',
+    },
+  },
+  'Nexen' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.136',
+    },
+  },
+  'ADVISEO' => {
+    'sort' => 'any',
+    'sessions' => {
+      'pouix' => '80.67.175.59',
+      'geix' => '80.67.163.64',
+    },
+  },
+  'EuroCenter' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.191',
+    },
+  },
+  'Sunrise' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.213',
+    },
+  },
+  'Lost-Oasis' => {
+    'sort' => 'any',
+    'sessions' => {
+      'pouix' => '80.67.175.7',
+      'freeix' => '213.228.3.203',
+    },
+  },
+  'Decknet' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.188',
+    },
+  },
+  'COMSTAR-Direct' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.148',
+    },
+  },
+  'Splio' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.115',
+      'panap' => '62.35.254.75',
+    },
+  },
+  'Completel' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.188',
+      'freeix' => '213.228.3.215',
+    },
+  },
+  'EBSD' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.136',
+      'panap' => '62.35.254.109',
+    },
+  },
+  'Flag' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.170',
+    },
+  },
+  'Linkbynet' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.206',
+    },
+  },
+  'TAS France' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.180',
+    },
+  },
+  'NFrance' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.198',
+    },
+  },
+  'GIXE' => {
+    'sort' => 'single',
+    'sessions' => {
+      'pouix' => '62.35.254.74',
+    },
+  },
+  'NTL' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.197',
+    },
+  },
+  '9 Telecom' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.178',
+      'freeix' => '213.228.3.241',
+    },
+  },
+  'Axinet' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.166',
+    },
+  },
+  'Telefonica Deutschland' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.228',
+    },
+  },
+  'InfoClip' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.157',
+    },
+  },
+  'LTT' => {
+    'sort' => 'single',
+    'sessions' => {
+      'pouix' => '80.67.175.26',
+    },
+  },
+  'Romania Data Systems' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.175',
+    },
+  },
+  '720degres' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.166',
+    },
+  },
+  'RelouFR' => {
+    'sort' => 'single',
+    'sessions' => {
+      'pouix' => '80.67.175.14',
+    },
+  },
+  'ISC' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.160',
+    },
+  },
+  'YACAST' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.171',
+      'freeix' => '213.228.3.222',
+    },
+  },
+  'Carpediem' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.221',
+    },
+  },
+  'F-ROOT' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.150',
+    },
+  },
+  'Ikoula' => {
+    'sort' => 'any',
+    'sessions' => {
+      'pouix' => '80.67.175.55',
+      'freeix' => '213.228.3.209',
+    },
+  },
+  'Belgacom/Belbonet' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.173',
+    },
+  },
+  'Neuronnexion' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.111',
+    },
+  },
+  'HIVANE' => {
+    'sort' => 'single',
+    'sessions' => {
+      'pouix' => '80.67.175.15',
+    },
+  },
+  'Externall' => {
+    'sort' => 'any',
+    'sessions' => {
+      'pouix' => '80.67.175.5',
+      'freeix' => '213.228.3.253',
+    },
+  },
+  'WebTech' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.214',
+    },
+  },
+  'Claranet' => {
+    'sort' => 'any',
+    'sessions' => {
+      'pouix' => '80.67.175.3',
+      'freeix' => '213.228.3.227',
+      'panap' => '62.35.254.20',
+    },
+  },
+  'Ecritel' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.245',
+      'freeix' => '213.228.3.208',
+    },
+  },
+  'Hivane' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.123',
+      'panap' => '62.35.254.61',
+    },
+  },
+  'Toile-Libre' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.106',
+      'pouix' => '80.67.175.61',
+      'panap' => '62.35.254.159',
+    },
+  },
+  'SWIPnet' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.162',
+    },
+  },
+  'Mgn' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.196',
+    },
+  },
+  'Andrexen' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.161',
+    },
+  },
+  'TSN Internet' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.177',
+    },
+  },
+  'Stella Net' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.193',
+    },
+  },
+  'Hurricane Electric' => {
+    'sort' => 'single',
+    'sessions' => {
+      'panap' => '62.35.254.111',
+    },
+  },
+  'RTL' => {
+    'sort' => 'single',
+    'sessions' => {
+      'sfinx' => '194.68.129.132',
+    },
+  },
+  'PT Comunicacoes' => {
+    'sort' => 'any',
+    'sessions' => {
+      'sfinx' => '194.68.129.176',
+      'freeix' => '213.228.3.149',
+    },
+  },
+  'REDNET' => {
+    'sort' => 'single',
+    'sessions' => {
+      'freeix' => '213.228.3.252',
+    },
+  },
+}