From arife at ripe.net Wed Jun 1 10:20:44 2005 From: arife at ripe.net (Arife Vural) Date: Wed, 1 Jun 2005 10:20:44 +0200 Subject: NCC#2002092793 [ris-int] RIS hijacking 195.80.239.0/24 In-Reply-To: <6.2.1.2.2.20050531114702.02c07928@localhost> References: <200505301458.j4UEwe45014422@birch.ripe.net> <6.2.1.2.2.20050531103323.02ccf810@localhost> <200505310925.j4V9PYY6022883@x25.ripe.net> <6.2.1.2.2.20050531114702.02c07928@localhost> Message-ID: <20050601082044.GA24196@ripe.net> Hi guys, To send those request, ris at ripe.net or ris-request at ripe.net are the right place. I look at the ticket after I got back from NANOG, and could not find any clear reason why we still announced that De-bogon prefixes. Nothing in bgpd config files, and also no whois entries. My suspicion is few ASes somehow (?) they still get those prefixes from us. I shutdown those sessions now, and will look at with James, whether we can find anything that would help to sort out this problem. Arife On Tue, May 31, 2005 at 11:49:39AM +0200, Henk Uijterwaal wrote: > Hi Mike, > > >Prefixes were removed that time, but then (after quite a long time) > >re-inserted. > > Which is strange, right? > > >P.S. Actually, the agreement was that RS sends a message to james at ripe.net, > >and dfk at ripe.net only, however we started CC'ing ris at ripe.net too as no one > >was answering the messages. > > That is actually my problem ;-) I don't really care who is mailing who, > but I do care if there is no follow-up on the mails. > > Henk > > > ------------------------------------------------------------------------------ > Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net > RIPE Network Coordination Centre http://www.amsterdamned.org/~henk > P.O.Box 10096 Singel 258 Phone: +31.20.5354414 > 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 > The Netherlands The Netherlands Mobile: +31.6.55861746 > ------------------------------------------------------------------------------ > > Look here junior, don't you be so happy. > And for Heaven's sake, don't you be so sad. (Tom Verlaine) From arife at ripe.net Wed Jun 1 12:31:35 2005 From: arife at ripe.net (Arife Vural) Date: Wed, 1 Jun 2005 12:31:35 +0200 Subject: NCC#2002092793 [ris-int] RIS hijacking 195.80.239.0/24 In-Reply-To: <20050601082044.GA24196@ripe.net> References: <200505301458.j4UEwe45014422@birch.ripe.net> <6.2.1.2.2.20050531103323.02ccf810@localhost> <200505310925.j4V9PYY6022883@x25.ripe.net> <6.2.1.2.2.20050531114702.02c07928@localhost> <20050601082044.GA24196@ripe.net> Message-ID: <20050601103135.GG24196@ripe.net> I do not know how much this help but we have route-set, it's called AS12654:RS-RIS and 87/8 is mentioning there. I updated it, and guys who get prefixes from us use that route-set. But those change will not be effected so soon. During the day, I will check it out and let you know when those routes disappeared from BGP routing tables. Arife On Wed, Jun 01, 2005 at 10:20:44AM +0200, Arife Vural wrote: > > Hi guys, > > To send those request, ris at ripe.net or ris-request at ripe.net are the right place. > > I look at the ticket after I got back from NANOG, and could not find any clear > reason why we still announced that De-bogon prefixes. Nothing in bgpd config > files, and also no whois entries. > > My suspicion is few ASes somehow (?) they still get those prefixes from us. > I shutdown those sessions now, and will look at with James, whether we can > find anything that would help to sort out this problem. > > Arife > > On Tue, May 31, 2005 at 11:49:39AM +0200, Henk Uijterwaal wrote: > > Hi Mike, > > > > >Prefixes were removed that time, but then (after quite a long time) > > >re-inserted. > > > > Which is strange, right? > > > > >P.S. Actually, the agreement was that RS sends a message to james at ripe.net, > > >and dfk at ripe.net only, however we started CC'ing ris at ripe.net too as no one > > >was answering the messages. > > > > That is actually my problem ;-) I don't really care who is mailing who, > > but I do care if there is no follow-up on the mails. > > > > Henk > > > > > > ------------------------------------------------------------------------------ > > Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net > > RIPE Network Coordination Centre http://www.amsterdamned.org/~henk > > P.O.Box 10096 Singel 258 Phone: +31.20.5354414 > > 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 > > The Netherlands The Netherlands Mobile: +31.6.55861746 > > ------------------------------------------------------------------------------ > > > > Look here junior, don't you be so happy. > > And for Heaven's sake, don't you be so sad. (Tom Verlaine) From arife at ripe.net Wed Jun 1 16:15:58 2005 From: arife at ripe.net (Arife Vural) Date: Wed, 1 Jun 2005 16:15:58 +0200 Subject: NCC#2002092793 [ris-int] RIS hijacking 195.80.239.0/24 In-Reply-To: <6.2.1.2.2.20050531114702.02c07928@localhost> References: <200505301458.j4UEwe45014422@birch.ripe.net> <6.2.1.2.2.20050531103323.02ccf810@localhost> <200505310925.j4V9PYY6022883@x25.ripe.net> <6.2.1.2.2.20050531114702.02c07928@localhost> Message-ID: <20050601141558.GJ24196@ripe.net> Latest update about this issue: It looks only AS28747 is announcing prefixes from 87/8 even if we do not announce it. I have contacted them to check out which prefixes they get from us and also reset the session. I hope that help. I had a chat with james, that might be a bug on router software, not to propogate the routes properly. But, still it does not explain how that route got there. Arife On Tue, May 31, 2005 at 11:49:39AM +0200, Henk Uijterwaal wrote: > Hi Mike, > > >Prefixes were removed that time, but then (after quite a long time) > >re-inserted. > > Which is strange, right? > > >P.S. Actually, the agreement was that RS sends a message to james at ripe.net, > >and dfk at ripe.net only, however we started CC'ing ris at ripe.net too as no one > >was answering the messages. > > That is actually my problem ;-) I don't really care who is mailing who, > but I do care if there is no follow-up on the mails. > > Henk > > > ------------------------------------------------------------------------------ > Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net > RIPE Network Coordination Centre http://www.amsterdamned.org/~henk > P.O.Box 10096 Singel 258 Phone: +31.20.5354414 > 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 > The Netherlands The Netherlands Mobile: +31.6.55861746 > ------------------------------------------------------------------------------ > > Look here junior, don't you be so happy. > And for Heaven's sake, don't you be so sad. (Tom Verlaine) From wilhelm at ripe.net Thu Jun 2 14:08:31 2005 From: wilhelm at ripe.net (Rene Wilhelm) Date: Thu, 2 Jun 2005 14:08:31 +0200 (CEST) Subject: NCC#2002092793 [ris-int] RIS hijacking 195.80.239.0/24 In-Reply-To: <20050601141558.GJ24196@ripe.net> References: <200505301458.j4UEwe45014422@birch.ripe.net> <6.2.1.2.2.20050531103323.02ccf810@localhost> <200505310925.j4V9PYY6022883@x25.ripe.net> <6.2.1.2.2.20050531114702.02c07928@localhost> <20050601141558.GJ24196@ripe.net> Message-ID: Hi Arife, Thanks for the update. Today RISwhois only sees 1 (one) peer at rrc00 forwarding the old debogon announcments from 87/8: route: 87.192.0.0/16 origin: AS12654 descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. lastupd-frst: 2005-06-01 10:11Z 212.47.190.1 at rrc00 lastupd-last: 2005-06-01 10:11Z 212.47.190.1 at rrc00 seen-at: rrc00 num-rispeers: 1 source: RISWHOIS route: 87.255.248.0/21 origin: AS12654 descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. lastupd-frst: 2005-06-01 10:11Z 212.47.190.1 at rrc00 lastupd-last: 2005-06-01 10:11Z 212.47.190.1 at rrc00 seen-at: rrc00 num-rispeers: 1 source: RISWHOIS The last update is yesterday, 10:11 UTC (14:11 local time) is that when you reset the session with AS28747? -- Rene On Wed, 1 Jun 2005, Arife Vural wrote: > > Latest update about this issue: > > It looks only AS28747 is announcing prefixes from 87/8 even if we do not > announce it. I have contacted them to check out which prefixes they get > from us and also reset the session. > > I hope that help. > > I had a chat with james, that might be a bug on router software, not to > propogate the routes properly. But, still it does not explain how that > route got there. > > Arife > > On Tue, May 31, 2005 at 11:49:39AM +0200, Henk Uijterwaal wrote: > > Hi Mike, > > > > >Prefixes were removed that time, but then (after quite a long time) > > >re-inserted. > > > > Which is strange, right? > > > > >P.S. Actually, the agreement was that RS sends a message to james at ripe.net, > > >and dfk at ripe.net only, however we started CC'ing ris at ripe.net too as no one > > >was answering the messages. > > > > That is actually my problem ;-) I don't really care who is mailing who, > > but I do care if there is no follow-up on the mails. > > > > Henk > > > > > > ------------------------------------------------------------------------------ > > Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net > > RIPE Network Coordination Centre http://www.amsterdamned.org/~henk > > P.O.Box 10096 Singel 258 Phone: +31.20.5354414 > > 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 > > The Netherlands The Netherlands Mobile: +31.6.55861746 > > ------------------------------------------------------------------------------ > > > > Look here junior, don't you be so happy. > > And for Heaven's sake, don't you be so sad. (Tom Verlaine) > > From security at paypal.com Fri Jun 3 14:28:32 2005 From: security at paypal.com (Paypal Security Center) Date: Fri, 3 Jun 2005 14:28:32 +0200 Subject: [ris-int] Urgent Notification Message-ID: <200506031228.j53CSWUM021045@nexus6.nx.pl> An HTML attachment was scrubbed... URL: From hostmaster at ripe.net Tue Jun 7 10:13:17 2005 From: hostmaster at ripe.net (RIPE NCC Hostmaster) Date: Tue, 07 Jun 2005 10:13:17 +0200 Subject: NCC#2002092793 [ris-int] RIS hijacking 195.80.239.0/24 In-Reply-To: ; from Rene Wilhelm on Thu, 2 Jun 2005 14:08:31 +0200 (CEST) References: <200505301458.j4UEwe45014422@birch.ripe.net> <6.2.1.2.2.20050531103323.02ccf810@localhost> <200505310925.j4V9PYY6022883@x25.ripe.net> <6.2.1.2.2.20050531114702.02c07928@localhost> <20050601141558.GJ24196@ripe.net> Message-ID: <200506070813.j578DJa8027027@x25.ripe.net> Dear Colleagues, It's quiet in this ticket for quite a while, while on the Net it's not so quiet: the ranges are still (again?) announced and visible (in case you don't know): route: 87.255.248.0/21 origin: AS12654 descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. lastupd-frst: 2005-06-05 14:10Z 212.47.190.1 at rrc00 lastupd-last: 2005-06-05 14:10Z 212.47.190.1 at rrc00 seen-at: rrc00 num-rispeers: 1 source: RISWHOIS We are still curious when is it going to stop. -- Sincerely, Mike Petuschak RIPE NCC > Hi Arife, > > Thanks for the update. > > Today RISwhois only sees 1 (one) peer at rrc00 forwarding the > old debogon announcments from 87/8: > > route: 87.192.0.0/16 > origin: AS12654 > descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. > lastupd-frst: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > lastupd-last: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > seen-at: rrc00 > num-rispeers: 1 > source: RISWHOIS > > route: 87.255.248.0/21 > origin: AS12654 > descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. > lastupd-frst: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > lastupd-last: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > seen-at: rrc00 > num-rispeers: 1 > source: RISWHOIS > > > The last update is yesterday, 10:11 UTC (14:11 local time) > is that when you reset the session with AS28747? > > -- Rene > > On Wed, 1 Jun 2005, Arife Vural wrote: > > > > > Latest update about this issue: > > > > It looks only AS28747 is announcing prefixes from 87/8 even if we do not > > announce it. I have contacted them to check out which prefixes they get > > from us and also reset the session. > > > > I hope that help. > > > > I had a chat with james, that might be a bug on router software, not to > > propogate the routes properly. But, still it does not explain how that > > route got there. > > > > Arife > > > > On Tue, May 31, 2005 at 11:49:39AM +0200, Henk Uijterwaal wrote: > > > Hi Mike, > > > > > > >Prefixes were removed that time, but then (after quite a long time) > > > >re-inserted. > > > > > > Which is strange, right? > > > > > > >P.S. Actually, the agreement was that RS sends a message to james at ripe.net, > > > >and dfk at ripe.net only, however we started CC'ing ris at ripe.net too as no one > > > >was answering the messages. > > > > > > That is actually my problem ;-) I don't really care who is mailing who, > > > but I do care if there is no follow-up on the mails. > > > > > > Henk > > > > > > > > > ------------------------------------------------------------------------------ > > > Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net > > > RIPE Network Coordination Centre http://www.amsterdamned.org/~henk > > > P.O.Box 10096 Singel 258 Phone: +31.20.5354414 > > > 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 > > > The Netherlands The Netherlands Mobile: +31.6.55861746 > > > ------------------------------------------------------------------------------ > > > > > > Look here junior, don't you be so happy. > > > And for Heaven's sake, don't you be so sad. (Tom Verlaine) > > > > -------------- next part -------------- A non-text attachment was scrubbed... Name: not available Type: application/pgp-signature Size: 206 bytes Desc: not available URL: From aw-confirm at eBay.com Tue Jun 7 18:33:03 2005 From: aw-confirm at eBay.com (aw-confirm at eBay.com) Date: Tue, 7 Jun 2005 18:33:03 +0200 (CEST) Subject: [ris-int] TKO Notice: ***Urgent Safeharbor Department Notice*** Message-ID: <20050607163303.7C33D1ACD06@smtp.alfalayer.com> An HTML attachment was scrubbed... URL: From security at paypal.com Wed Jun 8 09:45:32 2005 From: security at paypal.com (Paypal Security Center) Date: Wed, 08 Jun 2005 02:45:32 -0500 Subject: [ris-int] Urgent Notification Message-ID: An HTML attachment was scrubbed... URL: From arife at ripe.net Wed Jun 8 15:11:35 2005 From: arife at ripe.net (Arife Vural) Date: Wed, 8 Jun 2005 15:11:35 +0200 Subject: NCC#2002092793 [ris-int] RIS hijacking 195.80.239.0/24 In-Reply-To: <200506070813.j578DJa8027027@x25.ripe.net> References: <200505301458.j4UEwe45014422@birch.ripe.net> <6.2.1.2.2.20050531103323.02ccf810@localhost> <200505310925.j4V9PYY6022883@x25.ripe.net> <6.2.1.2.2.20050531114702.02c07928@localhost> <20050601141558.GJ24196@ripe.net> <200506070813.j578DJa8027027@x25.ripe.net> Message-ID: <20050608131135.GD28740@ripe.net> Hi Mike, I'm chasing those guys who still think we announce that prefix. But I have not got any useful info from them. Last, I contacted with AS9177, but I have not got any reply back. I attached the e-mail that I got from Tiscali, it looks this route still is hanging there because of a Cisco bug or maybe other vendor OS bugs. I do not know what else I could do be honest ... Arife -- From: Alexander Koch To: Arife Vural Subject: Re: Need a favor Message-ID: <20050608120049.GA21021 at shekinah.ip.tiscali.net> References: <20050608120017.GC22290 at ripe.net> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20050608120017.GC22290 at ripe.net> Organization: Tiscali International Network B.V. X-NCC-RegID: eu.nacnet User-Agent: Mutt/1.5.9i X-RIPE-Spam-Level: X-RIPE-Spam-Tests: BAYES_00 X-RIPE-Spam-Status: U 0.298951 / -2.6 X-RIPE-Signature: f24e950eeaafece3eb369dee26ae860b Status: RO Content-Length: 1707 Lines: 50 Hello Arife, what you see is probably comparable to IPv6 ghosts routes where a /35 more specific route sticked in the routing table long after it was theoretically withdrawn. We currently do not see the route from RealROOT, but then, AS28747 was changed to AS 9009 two weeks ago or so. Also seeing the AS path I believe you can safely assume AS5400 (BT's backbone) is not seeing it either... your best bet might be to contact bgp at sunrise.net and/or AS9177 directly. Does that help? Best regards, Alexander On Wed, 8 June 2005 14:00:17 +0200, Arife Vural wrote: > Hi Alexander, > > Part of De-bogonising project we were announcing 87/8. We stopped it > for a while, but it's seen in routing tables. Be honest, I could not > explain why this route was still in the routing tables even if we do > not have any entries in our config file for that prefix. > > On rrc00, it's seen like that, > > rrc00> sh ip bgp 87.255.248.0/21 > BGP routing table entry for 87.255.248.0/21 > Paths: (1 available, best #1, table Default-IP-Routing-Table) > Not advertised to any peer > 9177 6730 5400 3257 28747 12654 > 212.47.190.1 from 212.47.190.1 (213.193.66.42) > Origin IGP, localpref 100, valid, external, best > Last update: Wed Jun 8 10:20:46 2005 > > I contacted with AS28747, but could not get any reply back to check > whether they get this prefix from us or not. > > I would like to ask you to check whether you get this prefix from AS28747. > If so, not sure but resetting the session with AS28747 would make any help? > > Kind regards. > > Arife -- Alexander Koch / ako4-ripe Tiscali Int., Peering Coordination Phone +49 6103 916 480, Fax +49 6103 916 464 On Tue, Jun 07, 2005 at 10:13:17AM +0200, RIPE NCC Hostmaster wrote: > Dear Colleagues, > > It's quiet in this ticket for quite a while, while on the Net it's not > so quiet: the ranges are still (again?) announced and visible > (in case you don't know): > > route: 87.255.248.0/21 > origin: AS12654 > descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. > lastupd-frst: 2005-06-05 14:10Z 212.47.190.1 at rrc00 > lastupd-last: 2005-06-05 14:10Z 212.47.190.1 at rrc00 > seen-at: rrc00 > num-rispeers: 1 > source: RISWHOIS > > We are still curious when is it going to stop. > > > -- > Sincerely, > > Mike Petuschak > RIPE NCC > > > > > Hi Arife, > > > > Thanks for the update. > > > > Today RISwhois only sees 1 (one) peer at rrc00 forwarding the > > old debogon announcments from 87/8: > > > > route: 87.192.0.0/16 > > origin: AS12654 > > descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. > > lastupd-frst: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > > lastupd-last: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > > seen-at: rrc00 > > num-rispeers: 1 > > source: RISWHOIS > > > > route: 87.255.248.0/21 > > origin: AS12654 > > descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. > > lastupd-frst: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > > lastupd-last: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > > seen-at: rrc00 > > num-rispeers: 1 > > source: RISWHOIS > > > > > > The last update is yesterday, 10:11 UTC (14:11 local time) > > is that when you reset the session with AS28747? > > > > -- Rene > > > > On Wed, 1 Jun 2005, Arife Vural wrote: > > > > > > > > Latest update about this issue: > > > > > > It looks only AS28747 is announcing prefixes from 87/8 even if we do not > > > announce it. I have contacted them to check out which prefixes they get > > > from us and also reset the session. > > > > > > I hope that help. > > > > > > I had a chat with james, that might be a bug on router software, not to > > > propogate the routes properly. But, still it does not explain how that > > > route got there. > > > > > > Arife > > > > > > On Tue, May 31, 2005 at 11:49:39AM +0200, Henk Uijterwaal wrote: > > > > Hi Mike, > > > > > > > > >Prefixes were removed that time, but then (after quite a long time) > > > > >re-inserted. > > > > > > > > Which is strange, right? > > > > > > > > >P.S. Actually, the agreement was that RS sends a message to james at ripe.net, > > > > >and dfk at ripe.net only, however we started CC'ing ris at ripe.net too as no one > > > > >was answering the messages. > > > > > > > > That is actually my problem ;-) I don't really care who is mailing who, > > > > but I do care if there is no follow-up on the mails. > > > > > > > > Henk > > > > > > > > > > > > ------------------------------------------------------------------------------ > > > > Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net > > > > RIPE Network Coordination Centre http://www.amsterdamned.org/~henk > > > > P.O.Box 10096 Singel 258 Phone: +31.20.5354414 > > > > 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 > > > > The Netherlands The Netherlands Mobile: +31.6.55861746 > > > > ------------------------------------------------------------------------------ > > > > > > > > Look here junior, don't you be so happy. > > > > And for Heaven's sake, don't you be so sad. (Tom Verlaine) > > > > > > From wilhelm at ripe.net Wed Jun 8 16:03:04 2005 From: wilhelm at ripe.net (Rene Wilhelm) Date: Wed, 08 Jun 2005 16:03:04 +0200 Subject: NCC#2002092793 [ris-int] RIS hijacking 195.80.239.0/24 In-Reply-To: Message from Arife Vural of "Wed, 08 Jun 2005 15:11:35 +0200." <20050608131135.GD28740@ripe.net> Message-ID: <200506081403.j58E34UU023347@birch.ripe.net> Hi Arife, I understand it's a difficult issue; fortunately we're left with only 1 debogon prefix: whois -h riswhois -F -M 87/8 |grep 12654 12654 87.255.248.0/21 1 The other one, 87.192.0.0/16, is now announced by AS25441 and seen by 64 RIS peers. Perhaps all it takes to clear the bogus debogon is for a new owner to insert a fresh announcement? If you want to continue contacting every AS which according to the routing tables sees the debogon route, you could also check route-views' routers for info. For example, @oregon-ix: x27$ telnet route-views.oregon-ix.net [...] route-views.oregon-ix.net>sh ip bgp 87.255.248.0/21 BGP routing table entry for 87.255.248.0/21, version 60855137 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer 3277 6820 3246 5400 5400 3257 28747 12654 194.85.4.55 from 194.85.4.55 (194.85.4.55) Origin IGP, localpref 100, valid, external, best Community: 3277:6820 3277:65361 Only the "5400 3257 28747 12654" part is in common with RIS, the other ASNs are different. Cheers, -- Rene > Hi Mike, > > I'm chasing those guys who still think we announce that prefix. But I have > not got any useful info from them. Last, I contacted with AS9177, but I > have not got any reply back. > > I attached the e-mail that I got from Tiscali, it looks this route still > is hanging there because of a Cisco bug or maybe other vendor OS bugs. > I do not know what else I could do be honest ... > > Arife > > -- > > From: Alexander Koch > To: Arife Vural > Subject: Re: Need a favor > Message-ID: <20050608120049.GA21021 at shekinah.ip.tiscali.net> > References: <20050608120017.GC22290 at ripe.net> > Mime-Version: 1.0 > Content-Type: text/plain; charset=us-ascii > Content-Disposition: inline > In-Reply-To: <20050608120017.GC22290 at ripe.net> > Organization: Tiscali International Network B.V. > X-NCC-RegID: eu.nacnet > User-Agent: Mutt/1.5.9i > X-RIPE-Spam-Level: > X-RIPE-Spam-Tests: BAYES_00 > X-RIPE-Spam-Status: U 0.298951 / -2.6 > X-RIPE-Signature: f24e950eeaafece3eb369dee26ae860b > Status: RO > Content-Length: 1707 > Lines: 50 > > Hello Arife, > > what you see is probably comparable to IPv6 ghosts routes > where a /35 more specific route sticked in the routing table > long after it was theoretically withdrawn. > > We currently do not see the route from RealROOT, but then, > AS28747 was changed to AS 9009 two weeks ago or so. Also > seeing the AS path I believe you can safely assume AS5400 > (BT's backbone) is not seeing it either... your best bet > might be to contact bgp at sunrise.net and/or AS9177 directly. > > Does that help? > > Best regards, > Alexander > > On Wed, 8 June 2005 14:00:17 +0200, Arife Vural wrote: > > Hi Alexander, > > > > Part of De-bogonising project we were announcing 87/8. We stopped it > > for a while, but it's seen in routing tables. Be honest, I could not > > explain why this route was still in the routing tables even if we do > > not have any entries in our config file for that prefix. > > > > On rrc00, it's seen like that, > > > > rrc00> sh ip bgp 87.255.248.0/21 > > BGP routing table entry for 87.255.248.0/21 > > Paths: (1 available, best #1, table Default-IP-Routing-Table) > > Not advertised to any peer > > 9177 6730 5400 3257 28747 12654 > > 212.47.190.1 from 212.47.190.1 (213.193.66.42) > > Origin IGP, localpref 100, valid, external, best > > Last update: Wed Jun 8 10:20:46 2005 > > > > I contacted with AS28747, but could not get any reply back to check > > whether they get this prefix from us or not. > > > > I would like to ask you to check whether you get this prefix from AS28747. > > If so, not sure but resetting the session with AS28747 would make any help? > > > > Kind regards. > > > > Arife > > -- > Alexander Koch / ako4-ripe > Tiscali Int., Peering Coordination > Phone +49 6103 916 480, Fax +49 6103 916 464 > > On Tue, Jun 07, 2005 at 10:13:17AM +0200, RIPE NCC Hostmaster wrote: > > Dear Colleagues, > > > > It's quiet in this ticket for quite a while, while on the Net it's not > > so quiet: the ranges are still (again?) announced and visible > > (in case you don't know): > > > > route: 87.255.248.0/21 > > origin: AS12654 > > descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. > > lastupd-frst: 2005-06-05 14:10Z 212.47.190.1 at rrc00 > > lastupd-last: 2005-06-05 14:10Z 212.47.190.1 at rrc00 > > seen-at: rrc00 > > num-rispeers: 1 > > source: RISWHOIS > > > > We are still curious when is it going to stop. > > > > > > -- > > Sincerely, > > > > Mike Petuschak > > RIPE NCC > > > > > > > > > Hi Arife, > > > > > > Thanks for the update. > > > > > > Today RISwhois only sees 1 (one) peer at rrc00 forwarding the > > > old debogon announcments from 87/8: > > > > > > route: 87.192.0.0/16 > > > origin: AS12654 > > > descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. > > > lastupd-frst: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > > > lastupd-last: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > > > seen-at: rrc00 > > > num-rispeers: 1 > > > source: RISWHOIS > > > > > > route: 87.255.248.0/21 > > > origin: AS12654 > > > descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. > > > lastupd-frst: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > > > lastupd-last: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > > > seen-at: rrc00 > > > num-rispeers: 1 > > > source: RISWHOIS > > > > > > > > > The last update is yesterday, 10:11 UTC (14:11 local time) > > > is that when you reset the session with AS28747? > > > > > > -- Rene From arife at ripe.net Thu Jun 9 14:22:14 2005 From: arife at ripe.net (Arife Vural) Date: Thu, 9 Jun 2005 14:22:14 +0200 Subject: [ris-int] Re: updated libbgpdump In-Reply-To: <429450AC.1010102@dia.uniroma3.it> References: <1116969547.18679.14.camel@ablate.merit.edu> <20050525100654.GK25433@ripe.net> <429450AC.1010102@dia.uniroma3.it> Message-ID: <20050609122214.GA12265@ripe.net> Hi Lorenzo, I attached the changes he made. Some about indentation but still it looks there are quite changes. It takes me a while to merge those changes. If you have any comments, please let me know. Arife On Wed, May 25, 2005 at 12:17:16PM +0200, Lorenzo Colitti wrote: > Arife Vural wrote: > >Thanks getting back to me quickly. This week I will look at the > >changes you made and submit to CVS, also my plan is to put this > >lib into our public CVS. > > Hi Arife, > > could you also send the diff to me? I would like to look over it, see > where the memory leak came from, what changes they made, ... > > > Cheers, > Lorenzo > > -- > --------------------------------------------------------- > Lorenzo Colitti Ph.D student > Computer Networks research group Roma Tre University > colitti at dia.uniroma3.it +39-0655173215 > --------------------------------------------------------- -------------- next part -------------- Only in libbgpdump-1.4/: CVS diff -r -U 3 libbgpdump-1.4/ChangeLog libbgpdump-new/ChangeLog --- libbgpdump-1.4/ChangeLog 2005-06-09 11:56:00.000000000 +0200 +++ libbgpdump-new/ChangeLog 2005-01-14 22:30:10.000000000 +0100 @@ -1,37 +1,3 @@ -2004-05-17 Lorenzo Colitti - * Output times properly in withdrawals with -m/-M - * Properly support ipv6 with table dumps and -M - -2004-02-04 Hong-wei Kong - * Add a new option (-t dump|change) to bgpdump. If '-t dump' is - specified, then the decoding result with '-m' / '-M' option will - show the timestamp when these routes are dumped. If '-t change' is - specified, then the decoding result with '-m' / '-M' option will - show the timestamp when the routes were last time changed. This - option only works with routing table dumps. - -2004-01-16 Lorenzo Colitti - * Fix compile errors under cygwin (only IPv4 works though) - -2003-12-18 Hong-Wei Kong - * Added support for dumping BGP routing table entries in - machine-readable format (-m). Previously -m was only supported - for BGP messages - -2003-12-16 Shufu Mao - * Revised the decoding of BGP routing table dump to make the result - identical to route_btoa - -2003-12-15 Lorenzo Colitti - * Proper autoconf support: check for features instead of target - systems, remove extra .h files and only use configure.in, use - Makefile.in instead of Make.include, link both static and - shared library, check for ar and ranlib, etc. - * Changed INET6 to BGPDUMP_HAVE_IPV6 - (N.B. Docs are not updated yet) - * Fixed possible endianness issues on Sparc. - * Fixed a crash while decoding NOTIFICATION messages - 2004-02-10 Lorenzo Colitti * Fix a stupid crash when reading truncated prefixes. diff -r -U 3 libbgpdump-1.4/Makefile.in libbgpdump-new/Makefile.in --- libbgpdump-1.4/Makefile.in 2004-07-29 15:48:19.000000000 +0200 +++ libbgpdump-new/Makefile.in 2005-01-14 22:30:09.000000000 +0100 @@ -1,4 +1,4 @@ -# $Id: Makefile.in,v 1.1.1.1 2004/07/29 13:48:19 james Exp $ +# $Id: Makefile.in,v 1.1.1.1 2005/01/14 21:30:09 ljb Exp $ CC = @CC@ CFLAGS = @CFLAGS@ diff -r -U 3 libbgpdump-1.4/VERSION libbgpdump-new/VERSION --- libbgpdump-1.4/VERSION 2005-01-17 11:38:22.000000000 +0100 +++ libbgpdump-new/VERSION 2005-01-14 22:30:09.000000000 +0100 @@ -1 +1 @@ -libbgpdump-1.4.1 +libbgpdump-1.4 Only in libbgpdump-new/: bgpdump-config.h.in diff -r -U 3 libbgpdump-1.4/bgpdump.c libbgpdump-new/bgpdump.c --- libbgpdump-1.4/bgpdump.c 2005-01-17 11:18:51.000000000 +0100 +++ libbgpdump-new/bgpdump.c 2005-06-09 14:03:28.000000000 +0200 @@ -1,51 +1,46 @@ /* + * + * Copyright (c) 2002 RIPE NCC + * + * + * All Rights Reserved + * + * Permission to use, copy, modify, and distribute this software and its + * documentation for any purpose and without fee is hereby granted, + * provided that the above copyright notice appear in all copies and that + * both that copyright notice and this permission notice appear in + * supporting documentation, and that the name of the author not be used + * in advertising or publicity pertaining to distribution of the software + * without specific, written prior permission. + * + * THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, + * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO + * EVENT SHALL AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL + * DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR + * PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS + * ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF + * THIS SOFTWARE. + * + */ -Copyright (c) 2002 RIPE NCC - - -All Rights Reserved - -Permission to use, copy, modify, and distribute this software and its -documentation for any purpose and without fee is hereby granted, provided -that the above copyright notice appear in all copies and that both that -copyright notice and this permission notice appear in supporting -documentation, and that the name of the author not be used in advertising or -publicity pertaining to distribution of the software without specific, -written prior permission. - -THE AUTHOR DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING -ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS; IN NO EVENT SHALL -AUTHOR BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY -DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN -AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF -OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. - -*/ - -/* - -Parts of this code have been engineered after analiyzing GNU Zebra's -source code and therefore might contain declarations/code from GNU -Zebra, Copyright (C) 1999 Kunihiro Ishiguro. Zebra is a free routing -software, distributed under the GNU General Public License. A copy of -this license is included with libbgpdump. - -*/ +/* + * + * Parts of this code have been engineered after analiyzing GNU Zebra's + * source code and therefore might contain declarations/code from GNU + * Zebra, Copyright (C) 1999 Kunihiro Ishiguro. Zebra is a free routing + * software, distributed under the GNU General Public License. A copy of + * this license is included with libbgpdump. + * + */ /* -------------------------------------------------------------------------------- -Module Header -Filename : bgpdump.c -Author : Shufu Mao(msf98 at mails.tsinghua.edu.cn) -Date : 2003-11-02 -Revision : -Revised : -Description : bgpdump program, the input and output format is the same as route_btoa -Language Version : C -OSs Tested : Linux 2.4.22 -To Do : -------------------------------------------------------------------------------- -*/ + * ---------------------------------------------------------------------------- + * Module Header Filename : bgpdump.c Author : Shufu + * Mao(msf98 at mails.tsinghua.edu.cn) Date : 2003-11-02 Revision : Revised : + * Description : bgpdump program, the input and output format is the same as + * route_btoa Language Version : C OSs Tested : Linux 2.4.22 To Do : + * ---------------------------------------------------------------------------- + */ #if HAVE_CONFIG_H #include @@ -59,1406 +54,2160 @@ #include #include - void process(BGPDUMP_ENTRY *entry); + void process(BGPDUMP_ENTRY * entry); void show_attr(struct attr *attr); - void show_prefixes(int count,struct prefix *prefix); - void table_line_announce_1(int mode,struct mp_nlri *prefix,int count,BGPDUMP_ENTRY *entry,char *time_str); - void table_line_announce(int mode,struct prefix *prefix,int count,BGPDUMP_ENTRY *entry,char *time_str); - void table_line_withdraw(int mode,struct prefix *prefix,int count,BGPDUMP_ENTRY *entry,char *time_str); - void table_line_mrtd_route(int mode,BGPDUMP_MRTD_TABLE_DUMP *route,BGPDUMP_ENTRY *entry, int timetype); -#ifdef BGPDUMP_HAVE_IPV6 - void show_prefixes6(int count,struct prefix *prefix); - void table_line_withdraw6(int mode,struct prefix *prefix,int count,BGPDUMP_ENTRY *entry,char *time_str); - void table_line_announce6(int mode,struct mp_nlri *prefix,int count,BGPDUMP_ENTRY *entry,char *time_str); + void show_prefixes(int count, struct prefix *prefix); + void table_line_announce_1(int mode, struct mp_nlri *prefix, int count, BGPDUMP_ENTRY * entry, char *time_str); + void table_line_announce(int mode, struct prefix *prefix, int count, BGPDUMP_ENTRY * entry, char *time_str); + void table_line_withdraw(int mode, struct prefix *prefix, int count, BGPDUMP_ENTRY * entry, char *time_str); + void table_line_mrtd_route(int mode, BGPDUMP_MRTD_TABLE_DUMP * route, BGPDUMP_ENTRY * entry, int timetype); +#ifdef BGPDUMP_HAVE_IPV6 + void show_prefixes6(int count, struct prefix *prefix); + void table_line_withdraw6(int mode, struct prefix *prefix, int count, BGPDUMP_ENTRY * entry, char *time_str); + void table_line_announce6(int mode, struct mp_nlri *prefix, int count, BGPDUMP_ENTRY * entry, char *time_str); #endif + static int mode = 0; + static int timetype = 0; - static int mode=0; - static int timetype=0; - -int main(int argc, char *argv[]) { - - BGPDUMP *my_dump; - BGPDUMP_ENTRY *my_entry=NULL; - extern char *optarg; - char c; - extern int optind; - char *usage = "Usage: bgpdump [-m] [-M] [-i] [-t dump|change ] input_binary_file(s) \n"; +int main(int argc, char *argv[]) +{ - while ((c=getopt(argc,argv,"if:o:t:mM"))!=-1) - switch(c) - { + BGPDUMP *my_dump; + BGPDUMP_ENTRY *my_entry = NULL; + extern char *optarg; + char c; + extern int optind; + char *usage = + "Usage: bgpdump [-m] [-M] [-i] [-t dump|change ] input_binary_file(s) \n"; + + while ((c = getopt(argc, argv, "if:o:t:mM")) != -1) + switch (c) { case 'm': - mode=1; - break; + mode = 1; + break; case 'M': - mode=2; - break; + mode = 2; + break; case 't': - if(strcmp(optarg,"dump")==0){ - timetype=0; - }else if(strcmp(optarg,"change")==0){ - timetype=1; - } + if (strcmp(optarg, "dump") == 0) { + timetype = 0; + } else if (strcmp(optarg, "change") == 0) { + timetype = 1; + } default: - break; + break; } - - if(argc>1) { - my_dump=bgpdump_open_dump(argv[optind]); + + if (argc > 1) { + my_dump = bgpdump_open_dump(argv[optind]); } else { - my_dump=bgpdump_open_dump("dumps/updates.20020701.0032"); + my_dump = bgpdump_open_dump("dumps/updates.20020701.0032"); } - - if(my_dump==NULL) { - printf("%s",usage); + + if (my_dump == NULL) { + printf("%s", usage); exit(1); } - + do { - my_entry=bgpdump_read_next(my_dump); - if(my_entry!=NULL) { + my_entry = bgpdump_read_next(my_dump); + if (my_entry != NULL) { process(my_entry); bgpdump_free_mem(my_entry); } - } while(my_dump->eof==0); + } + while (my_dump->eof == 0); bgpdump_close_dump(my_dump); - - return 0; + + return 0; } -char *bgp_state_name[] = { - "Unknown", - "Idle", - "Connect", - "Active", - "Opensent", - "Openconfirm", - "Established", - NULL +char *bgp_state_name[] = { + "Unknown", + "Idle", + "Connect", + "Active", + "Opensent", + "Openconfirm", + "Established", + NULL }; -void time2str(struct tm* time,char *time_str) + +void +time2str(struct tm *time, char *time_str) { - char tmp_str[10]; + char tmp_str[10]; - if (time->tm_mon+1<10) - sprintf(tmp_str,"0%d/",time->tm_mon+1); - else - sprintf(tmp_str,"%d/",time->tm_mon+1); - strcpy(time_str,tmp_str); - - if (time->tm_mday<10) - sprintf(tmp_str,"0%d/",time->tm_mday); - else - sprintf(tmp_str,"%d/",time->tm_mday); - strcat(time_str,tmp_str); - - if (time->tm_year%100 <10) - sprintf(tmp_str,"0%d ",time->tm_year%100); - else - sprintf(tmp_str,"%d ",time->tm_year%100); - strcat(time_str,tmp_str); - - if (time->tm_hour<10) - sprintf(tmp_str,"0%d:",time->tm_hour); - else - sprintf(tmp_str,"%d:",time->tm_hour); - strcat(time_str,tmp_str); - - if (time->tm_min<10) - sprintf(tmp_str,"0%d:",time->tm_min); - else - sprintf(tmp_str,"%d:",time->tm_min); - strcat(time_str,tmp_str); - - if (time->tm_sec <10) - sprintf(tmp_str,"0%d",time->tm_sec); - else - sprintf(tmp_str,"%d",time->tm_sec); - strcat(time_str,tmp_str); + if (time->tm_mon + 1 < 10) + sprintf(tmp_str, "0%d/", time->tm_mon + 1); + else + sprintf(tmp_str, "%d/", time->tm_mon + 1); + strcpy(time_str, tmp_str); + + if (time->tm_mday < 10) + sprintf(tmp_str, "0%d/", time->tm_mday); + else + sprintf(tmp_str, "%d/", time->tm_mday); + strcat(time_str, tmp_str); + + if (time->tm_year % 100 < 10) + sprintf(tmp_str, "0%d ", time->tm_year % 100); + else + sprintf(tmp_str, "%d ", time->tm_year % 100); + strcat(time_str, tmp_str); + + if (time->tm_hour < 10) + sprintf(tmp_str, "0%d:", time->tm_hour); + else + sprintf(tmp_str, "%d:", time->tm_hour); + strcat(time_str, tmp_str); + + if (time->tm_min < 10) + sprintf(tmp_str, "0%d:", time->tm_min); + else + sprintf(tmp_str, "%d:", time->tm_min); + strcat(time_str, tmp_str); + + if (time->tm_sec < 10) + sprintf(tmp_str, "0%d", time->tm_sec); + else + sprintf(tmp_str, "%d", time->tm_sec); + strcat(time_str, tmp_str); } -void process(BGPDUMP_ENTRY *entry) { - struct tm *time; - char time_str[128]; - char time_str2[128]; - char tmp_str[10]; - char prefix[BGPDUMP_ADDRSTRLEN]; - - time=gmtime(&entry->time); - time2str(time,time_str); - if (mode==0) - { - printf("TIME: %s\n",time_str); - } - //printf("TIME: %s",asctime(gmtime(&entry->time))); - //printf("LENGTH : %u\n", entry->length); - switch(entry->type) { - case BGPDUMP_TYPE_MRTD_TABLE_DUMP: - if(mode==0){ -#ifdef BGPDUMP_HAVE_IPV6 - if (entry->subtype == AFI_IP6) - printf("TYPE: TABLE_DUMP/INET6\n"); - else -#endif - printf("TYPE: TABLE_DUMP/INET\n"); - printf("VIEW: %d\n",entry->body.mrtd_table_dump.view); - printf("SEQUENCE: %d\n",entry->body.mrtd_table_dump.sequence); - printf("PREFIX: %s/%d\n",inet_ntoa(entry->body.mrtd_table_dump.prefix.v4_addr),entry->body.mrtd_table_dump.mask); - printf("FROM:"); - switch(entry->subtype) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: +void print_notify_message(u_char error_code, u_char sub_error_code) { - inet_ntop(AF_INET6,&entry->body.mrtd_table_dump.peer_ip.v6_addr,prefix,sizeof(prefix)); - printf(" %s ",prefix); - break; -#endif - case AFI_IP: - default: - if (entry->body.mrtd_table_dump.peer_ip.v4_addr.s_addr != 0x00000000L) - printf(" %s ",inet_ntoa(entry->body.mrtd_table_dump.peer_ip.v4_addr)); - else - printf(" N/A "); - } - printf("AS%d\n",entry->body.mrtd_table_dump.peer_as); + switch (error_code) { + case 1: + printf(" ERROR CODE : 1 (Message Header Error)\n"); + switch (sub_error_code) { + case 1: + printf + (" SUB ERROR : 1 (Connection Not Synchronized)\n"); + break; - //printf("FROM: %s AS%d\n",inet_ntoa(entry->body.mrtd_table_dump.peer_ip.v4_addr),entry->body.mrtd_table_dump.peer_as); - //time2str(localtime(&entry->body.mrtd_table_dump.uptime),time_str2); - time2str(gmtime(&entry->body.mrtd_table_dump.uptime),time_str2); - printf("ORIGINATED: %s\n",time_str2); - if (entry->attr && entry->attr->len) - show_attr(entry->attr); + case 2: + printf + (" SUB ERROR : 2 (Bad Message Length)\n"); + break; - printf("STATUS: 0x%x\n",entry->body.mrtd_table_dump.status); - - - //printf(" UPTIME : %s",asctime(gmtime(&entry->body.mrtd_table_dump.uptime))); - //printf(" PEER IP : %s\n",inet_ntoa(entry->body.mrtd_table_dump.peer_ip)); - //printf(" PEER IP : %s\n",inet_ntoa(entry->body.mrtd_table_dump.peer_ip.v4_addr)); - //printf(" PEER AS : %d\n",entry->body.mrtd_table_dump.peer_as); - } - else if (mode ==1 || mode ==2) // -m -M - { - table_line_mrtd_route(mode,&entry->body.mrtd_table_dump,entry,timetype); - } + case 3: + printf(" SUB ERROR : 3 (Bad Message Type)\n"); + break; + + default: + printf(" SUB ERROR : %d\n", sub_error_code); + break; + } break; - - case BGPDUMP_TYPE_ZEBRA_BGP: - - switch(entry->subtype) - { - case BGPDUMP_SUBTYPE_ZEBRA_BGP_MESSAGE: + case 2: + printf(" ERROR CODE : 2 (OPEN Message Error)\n"); + switch (sub_error_code) { + case 1: + printf + (" SUB ERROR : 1 (Unsupported Version Number)\n"); + break; - switch(entry->body.zebra_message.type) - { - case BGP_MSG_UPDATE: - if (mode ==0) - { - printf("TYPE: BGP4MP/MESSAGE/Update\n"); - if (entry->body.zebra_message.source_as) - { - printf("FROM:"); - switch(entry->body.zebra_message.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - - inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip.v6_addr,prefix,sizeof(prefix)); - printf(" %s ",prefix); - break; -#endif - case AFI_IP: - default: - if (entry->body.zebra_message.source_ip.v4_addr.s_addr != 0x00000000L) - printf(" %s ",inet_ntoa(entry->body.zebra_message.source_ip.v4_addr)); - else - printf(" N/A "); - } - printf("AS%d\n",entry->body.zebra_message.source_as); - } - if (entry->body.zebra_message.destination_as) - { - printf("TO:"); - switch(entry->body.zebra_message.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - - inet_ntop(AF_INET6,&entry->body.zebra_message.destination_ip.v6_addr,prefix,sizeof(prefix)); - printf(" %s ",prefix); - break; -#endif - case AFI_IP: - default: - if (entry->body.zebra_message.destination_ip.v4_addr.s_addr != 0x00000000L) - printf(" %s ",inet_ntoa(entry->body.zebra_message.destination_ip.v4_addr)); - else - printf(" N/A "); - } - printf("AS%d\n",entry->body.zebra_message.destination_as); - } - if (entry->attr && entry->attr->len) - show_attr(entry->attr); - if (entry->body.zebra_message.cut_bytes) - { - u_int16_t cutted,index; - u_int8_t buf[128]; - - printf(" INCOMPLETE PACKET: %d bytes cutted\n",entry->body.zebra_message.cut_bytes); - printf(" INCOMPLETE PART: "); - if (entry->body.zebra_message.incomplete.orig_len) - { - cutted=entry->body.zebra_message.incomplete.prefix.len/8+1; - buf[0]=entry->body.zebra_message.incomplete.orig_len; - memcpy(buf+1,&entry->body.zebra_message.incomplete.prefix.address,cutted-1); - - for (index=0;indexbody.zebra_message.withdraw_count) || (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MP_UNREACH_NLRI))) - { -#ifdef BGPDUMP_HAVE_IPV6 - if ((entry->body.zebra_message.withdraw_count)||(entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST] && entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST]->prefix_count) || (entry->attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST]->prefix_count) || (entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]->prefix_count) ||(entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST] && entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST]->prefix_count) || (entry->attr->mp_info->withdraw[AFI_IP6][SAFI_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP6][SAFI_MULTICAST]->prefix_count) || (entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST]->prefix_count) ) + case 2: + printf(" SUB ERROR : 2 (Bad Peer AS)\n"); + break; -#else - if ((entry->body.zebra_message.withdraw_count)||(entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST] && entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST]->prefix_count) || (entry->attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST]->prefix_count) || (entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]->prefix_count)) + case 3: + printf + (" SUB ERROR : 3 (Bad BGP Identifier)\n"); + break; -#endif - printf("WITHDRAW\n"); - if (entry->body.zebra_message.withdraw_count) - show_prefixes(entry->body.zebra_message.withdraw_count,entry->body.zebra_message.withdraw); - if (entry->attr->mp_info) - { - if (entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST] && entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST]->prefix_count) - show_prefixes(entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST]->prefix_count,entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST]->nlri); - - if (entry->attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST]->prefix_count) - show_prefixes(entry->attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST]->prefix_count,entry->attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST]->nlri); - - if (entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]->prefix_count) - show_prefixes(entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]->prefix_count,entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]->nlri); - -#ifdef BGPDUMP_HAVE_IPV6 - if (entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST] && entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST]->prefix_count) - show_prefixes6(entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST]->prefix_count,entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST]->nlri); - - if (entry->attr->mp_info->withdraw[AFI_IP6][SAFI_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP6][SAFI_MULTICAST]->prefix_count) - show_prefixes6(entry->attr->mp_info->withdraw[AFI_IP6][SAFI_MULTICAST]->prefix_count,entry->attr->mp_info->withdraw[AFI_IP6][SAFI_MULTICAST]->nlri); - - if (entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST]->prefix_count) - show_prefixes6(entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST]->prefix_count,entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST]->nlri); -#endif - } - } - if ( (entry->body.zebra_message.announce_count) || (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MP_REACH_NLRI))) - { - printf("ANNOUNCE\n"); - if (entry->body.zebra_message.announce_count) - show_prefixes(entry->body.zebra_message.announce_count,entry->body.zebra_message.announce); - if (entry->attr->mp_info) - { - if (entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST] && entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST]->prefix_count) - show_prefixes(entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST]->prefix_count,entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST]->nlri); - - if (entry->attr->mp_info->announce[AFI_IP][SAFI_MULTICAST] && entry->attr->mp_info->announce[AFI_IP][SAFI_MULTICAST]->prefix_count) - show_prefixes(entry->attr->mp_info->announce[AFI_IP][SAFI_MULTICAST]->prefix_count,entry->attr->mp_info->announce[AFI_IP][SAFI_MULTICAST]->nlri); - - if (entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST_MULTICAST] && entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST_MULTICAST]->prefix_count) - show_prefixes(entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST_MULTICAST]->prefix_count,entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST_MULTICAST]->nlri); - -#ifdef BGPDUMP_HAVE_IPV6 - if (entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST] && entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST]->prefix_count) - show_prefixes6(entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST]->prefix_count,entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST]->nlri); - - if (entry->attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST] && entry->attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST]->prefix_count) - show_prefixes6(entry->attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST]->prefix_count,entry->attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST]->nlri); - - if (entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST_MULTICAST] && entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST_MULTICAST]->prefix_count) - show_prefixes6(entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST_MULTICAST]->prefix_count,entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST_MULTICAST]->nlri); -#endif - } - } - } - else if (mode == 1 || mode == 2) //-m -M - { - if ((entry->body.zebra_message.withdraw_count) || (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MP_UNREACH_NLRI))) - { - - table_line_withdraw(mode,entry->body.zebra_message.withdraw,entry->body.zebra_message.withdraw_count,entry,time_str); - if (entry->attr->mp_info) - { - if (entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST] && entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST]->prefix_count) - table_line_withdraw(mode,entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST]->nlri,entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST]->prefix_count,entry,time_str); - if (entry->attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST]->prefix_count) - table_line_withdraw(mode,entry->attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST]->nlri,entry->attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST]->prefix_count,entry,time_str); - if (entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]->prefix_count) - table_line_withdraw(mode,entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]->nlri,entry->attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]->prefix_count,entry,time_str); - -#ifdef BGPDUMP_HAVE_IPV6 - if (entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST] && entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST]->prefix_count) - table_line_withdraw6(mode,entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST]->nlri,entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST]->prefix_count,entry,time_str); - if (entry->attr->mp_info->withdraw[AFI_IP6][SAFI_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP6][SAFI_MULTICAST]->prefix_count) - table_line_withdraw6(mode,entry->attr->mp_info->withdraw[AFI_IP6][SAFI_MULTICAST]->nlri,entry->attr->mp_info->withdraw[AFI_IP6][SAFI_MULTICAST]->prefix_count,entry,time_str); - if (entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST] && entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST]->prefix_count) - table_line_withdraw6(mode,entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST]->nlri,entry->attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST]->prefix_count,entry,time_str); -#endif - - } - - - } - if ( (entry->body.zebra_message.announce_count) || (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MP_REACH_NLRI))) - { - table_line_announce(mode,entry->body.zebra_message.announce,entry->body.zebra_message.announce_count,entry,time_str); - if (entry->attr->mp_info) - { - if (entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST] && entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST]->prefix_count) - table_line_announce_1(mode,entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST],entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST]->prefix_count,entry,time_str); - if (entry->attr->mp_info->announce[AFI_IP][SAFI_MULTICAST] && entry->attr->mp_info->announce[AFI_IP][SAFI_MULTICAST]->prefix_count) - table_line_announce_1(mode,entry->attr->mp_info->announce[AFI_IP][SAFI_MULTICAST],entry->attr->mp_info->announce[AFI_IP][SAFI_MULTICAST]->prefix_count,entry,time_str); - if (entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST_MULTICAST] && entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST_MULTICAST]->prefix_count) - table_line_announce_1(mode,entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST_MULTICAST],entry->attr->mp_info->announce[AFI_IP][SAFI_UNICAST_MULTICAST]->prefix_count,entry,time_str); -#ifdef BGPDUMP_HAVE_IPV6 - if (entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST] && entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST]->prefix_count) - table_line_announce6(mode,entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST],entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST]->prefix_count,entry,time_str); - if (entry->attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST] && entry->attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST]->prefix_count) - table_line_announce6(mode,entry->attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST],entry->attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST]->prefix_count,entry,time_str); - if (entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST_MULTICAST] && entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST_MULTICAST]->prefix_count) - table_line_announce6(mode,entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST_MULTICAST],entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST_MULTICAST]->prefix_count,entry,time_str); -#endif - - } - - } - } - break; - - case BGP_MSG_OPEN: - if (mode != 0) - break; - printf("TYPE: BGP4MP/MESSAGE/Open\n"); - if (entry->body.zebra_message.source_as) - { - printf("FROM:"); - switch(entry->body.zebra_message.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - - inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip.v6_addr,prefix,sizeof(prefix)); - printf(" %s ",prefix); - break; -#endif - case AFI_IP: - default: - if (entry->body.zebra_message.source_ip.v4_addr.s_addr != 0x00000000L) - printf(" %s ",inet_ntoa(entry->body.zebra_message.source_ip.v4_addr)); - else - printf(" N/A "); - } - printf("AS%d\n",entry->body.zebra_message.source_as); - } - if (entry->body.zebra_message.destination_as) - { - printf("TO:"); - switch(entry->body.zebra_message.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - - inet_ntop(AF_INET6,&entry->body.zebra_message.destination_ip.v6_addr,prefix,sizeof(prefix)); - printf(" %s ",prefix); - break; -#endif - case AFI_IP: - default: - if (entry->body.zebra_message.destination_ip.v4_addr.s_addr != 0x00000000L) - printf(" %s ",inet_ntoa(entry->body.zebra_message.destination_ip.v4_addr)); - else - printf(" N/A "); - } - printf("AS%d\n",entry->body.zebra_message.destination_as); - } - - printf("VERSION: %d\n",entry->body.zebra_message.version); - printf("AS: %d\n",entry->body.zebra_message.my_as); - printf("HOLD_TIME: %d\n",entry->body.zebra_message.hold_time); - printf("ID: %s\n",inet_ntoa(entry->body.zebra_message.bgp_id)); - printf("OPT_PARM_LEN: %d\n",entry->body.zebra_message.opt_len); - break; - - case BGP_MSG_NOTIFY: - if (mode != 0) - break; - printf("TYPE: BGP4MP/MESSAGE/Notify\n"); - if (entry->body.zebra_message.source_as) - { - printf("FROM:"); - switch(entry->body.zebra_message.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - - inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip.v6_addr,prefix,sizeof(prefix)); - printf(" %s ",prefix); - break; -#endif - case AFI_IP: - default: - if (entry->body.zebra_message.source_ip.v4_addr.s_addr != 0x00000000L) - printf(" %s ",inet_ntoa(entry->body.zebra_message.source_ip.v4_addr)); - else - printf(" N/A "); - } - printf("AS%d\n",entry->body.zebra_message.source_as); - } - if (entry->body.zebra_message.destination_as) - { - printf("TO:"); - switch(entry->body.zebra_message.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - - inet_ntop(AF_INET6,&entry->body.zebra_message.destination_ip.v6_addr,prefix,sizeof(prefix)); - printf(" %s ",prefix); - break; -#endif - case AFI_IP: - default: - if (entry->body.zebra_message.destination_ip.v4_addr.s_addr != 0x00000000L) - printf(" %s ",inet_ntoa(entry->body.zebra_message.destination_ip.v4_addr)); - else - printf(" N/A "); - } - printf("AS%d\n",entry->body.zebra_message.destination_as); - } - - switch (entry->body.zebra_message.error_code) - { - case 1: - printf(" ERROR CODE : 1 (Message Header Error)\n"); - switch(entry->body.zebra_message.sub_error_code) - { - case 1: - printf(" SUB ERROR : 1 (Connection Not Synchronized)\n"); - break; - - case 2: - printf(" SUB ERROR : 2 (Bad Message Length)\n"); - break; - - case 3: - printf(" SUB ERROR : 3 (Bad Message Type)\n"); - break; - - default: - printf(" SUB ERROR : %d\n",entry->body.zebra_message.sub_error_code); - break; - } - break; - case 2: - printf(" ERROR CODE : 2 (OPEN Message Error)\n"); - switch(entry->body.zebra_message.sub_error_code) - { - case 1: - printf(" SUB ERROR : 1 (Unsupported Version Number)\n"); - break; - - case 2: - printf(" SUB ERROR : 2 (Bad Peer AS)\n"); - break; - - case 3: - printf(" SUB ERROR : 3 (Bad BGP Identifier)\n"); - break; - - case 4: - printf(" SUB ERROR : 4 (Unsupported Optional Parameter)\n"); - break; - - case 5: - printf(" SUB ERROR : 5 (Authentication Failure)\n"); - break; - - case 6: - printf(" SUB ERROR : 6 (Unacceptable Hold Time)\n"); - break; - - default: - printf(" SUB ERROR : %d\n",entry->body.zebra_message.sub_error_code); - break; - } - break; - case 3: - printf(" ERROR CODE : 3 (UPDATE Message Error)\n"); - switch(entry->body.zebra_message.sub_error_code) - { - case 1: - printf(" SUB ERROR : 1 (Malformed Attribute List)\n"); - break; - - case 2: - printf(" SUB ERROR : 2 (Unrecognized Well-known Attribute)\n"); - break; - - case 3: - printf(" SUB ERROR : 3 (Missing Well-known Attribute)\n"); - break; - - case 4: - printf(" SUB ERROR : 4 (Attribute Flags Error)\n"); - break; - - case 5: - printf(" SUB ERROR : 5 (Attribute Length Error)\n"); - break; - - case 6: - printf(" SUB ERROR : 6 (Invalid ORIGIN Attribute)\n"); - break; - - case 7: - printf(" SUB ERROR : 7 (AS Routing Loop)\n"); - break; - - case 8: - printf(" SUB ERROR : 8 (Invalid NEXT-HOP Attribute)\n"); - break; - - case 9: - printf(" SUB ERROR : 9 (Optional Attribute Error)\n"); - break; - - case 10: - printf(" SUB ERROR : 10 (Invalid Network Field)\n"); - break; - - case 11: - printf(" SUB ERROR : 11 (Malformed AS-PATH)\n"); - break; - - default: - printf(" SUB ERROR : %d\n",entry->body.zebra_message.sub_error_code); - break; - } - break; - case 4: - printf(" ERROR CODE : 4 (Hold Timer Expired)\n"); - break; - case 5: - printf(" ERROR CODE : 5 (Finite State Machine Error)\n"); - break; - case 6: - printf(" ERROR CODE : 6 (Cease)\n"); - break; - default: - printf(" ERROR CODE : %d\n",entry->body.zebra_message.error_code); - break; - - } - break; - - case BGP_MSG_KEEPALIVE: - if ( mode != 0) - break; - - printf("TYPE: BGP4MP/MESSAGE/Keepalive\n"); - if (entry->body.zebra_message.source_as) - { - printf("FROM:"); - switch(entry->body.zebra_message.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - - inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip.v6_addr,prefix,sizeof(prefix)); - printf(" %s ",prefix); - break; -#endif - case AFI_IP: - default: - if (entry->body.zebra_message.source_ip.v4_addr.s_addr != 0x00000000L) - printf(" %s ",inet_ntoa(entry->body.zebra_message.source_ip.v4_addr)); - else - printf(" N/A "); - } - printf("AS%d\n",entry->body.zebra_message.source_as); - } - if (entry->body.zebra_message.destination_as) - { - printf("TO:"); - switch(entry->body.zebra_message.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - - inet_ntop(AF_INET6,&entry->body.zebra_message.destination_ip.v6_addr,prefix,sizeof(prefix)); - printf(" %s ",prefix); - break; -#endif - case AFI_IP: - default: - if (entry->body.zebra_message.destination_ip.v4_addr.s_addr != 0x00000000L) - printf(" %s ",inet_ntoa(entry->body.zebra_message.destination_ip.v4_addr)); - else - printf(" N/A "); - } - printf("AS%d\n",entry->body.zebra_message.destination_as); - } + case 4: + printf + (" SUB ERROR : 4 (Unsupported Optional Parameter)\n"); + break; + case 5: + printf + (" SUB ERROR : 5 (Authentication Failure)\n"); + break; - break; - } - break; + case 6: + printf + (" SUB ERROR : 6 (Unacceptable Hold Time)\n"); + break; - case BGPDUMP_SUBTYPE_ZEBRA_BGP_STATE_CHANGE: - if (mode==0) - { - printf("TYPE: BGP4MP/STATE_CHANGE\n"); + default: + printf(" SUB ERROR : %d\n", sub_error_code); + break; + } + break; + case 3: + printf(" ERROR CODE : 3 (UPDATE Message Error)\n"); + switch (sub_error_code) { + case 1: + printf + (" SUB ERROR : 1 (Malformed Attribute List)\n"); + break; - printf("PEER:"); - switch(entry->body.zebra_state_change.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: + case 2: + printf + (" SUB ERROR : 2 (Unrecognized Well-known Attribute)\n"); + break; - inet_ntop(AF_INET6,&entry->body.zebra_state_change.source_ip.v6_addr,prefix,sizeof(prefix)); - printf(" %s ",prefix); - break; -#endif - case AFI_IP: - default: - if (entry->body.zebra_state_change.source_ip.v4_addr.s_addr != 0x00000000L) - printf(" %s ",inet_ntoa(entry->body.zebra_message.source_ip.v4_addr)); - else - printf(" N/A "); - } - //if (entry->body.zebra_message.source_ip.s_addr != 0x00000000L) - // printf(" %s ",inet_ntoa(entry->body.zebra_message.source_ip)); - //else - // printf(" N/A "); - printf("AS%d\n",entry->body.zebra_state_change.source_as); + case 3: + printf + (" SUB ERROR : 3 (Missing Well-known Attribute)\n"); + break; - printf("STATE: %s/%s\n",bgp_state_name[entry->body.zebra_state_change.old_state],bgp_state_name[entry->body.zebra_state_change.new_state]); - } - else if (mode==1 || mode==2 ) //-m -M - { - switch(entry->body.zebra_state_change.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: + case 4: + printf + (" SUB ERROR : 4 (Attribute Flags Error)\n"); + break; - inet_ntop(AF_INET6,&entry->body.zebra_state_change.source_ip.v6_addr,prefix,sizeof(prefix)); - if (mode == 1) - printf("BGP4MP|%ld|STATE|%s|%d|%d|%d\n",entry->time,prefix,entry->body.zebra_state_change.source_as,entry->body.zebra_state_change.old_state,entry->body.zebra_state_change.new_state); - else - printf("BGP4MP|%s|STATE|%s|%d|%d|%d\n",time_str,prefix,entry->body.zebra_state_change.source_as,entry->body.zebra_state_change.old_state,entry->body.zebra_state_change.new_state); - break; -#endif - case AFI_IP: - default: - if (mode == 1) - printf("BGP4MP|%ld|STATE|%s|%d|%d|%d\n",entry->time,inet_ntoa(entry->body.zebra_state_change.source_ip.v4_addr),entry->body.zebra_state_change.source_as,entry->body.zebra_state_change.old_state,entry->body.zebra_state_change.new_state); - else - printf("BGP4MP|%s|STATE|%s|%d|%d|%d\n",time_str,inet_ntoa(entry->body.zebra_state_change.source_ip.v4_addr),entry->body.zebra_state_change.source_as,entry->body.zebra_state_change.old_state,entry->body.zebra_state_change.new_state); - break; + case 5: + printf + (" SUB ERROR : 5 (Attribute Length Error)\n"); + break; - } - } - break; - - } - break; - } - if (mode==0) - printf("\n"); -} + case 6: + printf + (" SUB ERROR : 6 (Invalid ORIGIN Attribute)\n"); + break; -void show_attr(struct attr *attr) { - - if(attr != NULL) { + case 7: + printf(" SUB ERROR : 7 (AS Routing Loop)\n"); + break; - if( (attr->flag & ATTR_FLAG_BIT (BGP_ATTR_ORIGIN) ) !=0 ) - { - switch (attr->origin) - { - case 0: - printf("ORIGIN: IGP\n"); - break; - case 1: - printf("ORIGIN: EGP\n"); - break; - case 2: - printf("ORIGIN: INCOMPLETE\n"); - - } - - } + case 8: + printf + (" SUB ERROR : 8 (Invalid NEXT-HOP Attribute)\n"); + break; - if( (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_AS_PATH) ) !=0) - printf("ASPATH: %s\n",attr->aspath->str); + case 9: + printf + (" SUB ERROR : 9 (Optional Attribute Error)\n"); + break; - if( (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_NEXT_HOP) ) !=0) - printf("NEXT_HOP: %s\n",inet_ntoa(attr->nexthop)); + case 10: + printf + (" SUB ERROR : 10 (Invalid Network Field)\n"); + break; - if( (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC) ) !=0) - printf("MULTI_EXIT_DISC: %d\n",attr->med); + case 11: + printf + (" SUB ERROR : 11 (Malformed AS-PATH)\n"); + break; - if( (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF) ) !=0) - printf("LOCAL_PREF: %d\n",attr->local_pref); + default: + printf(" SUB ERROR : %d\n", sub_error_code); + break; + } + break; + case 4: + printf(" ERROR CODE : 4 (Hold Timer Expired)\n"); + break; + case 5: + printf + (" ERROR CODE : 5 (Finite State Machine Error)\n"); + break; + case 6: + printf(" ERROR CODE : 6 (Cease)\n"); + break; + default: + printf(" ERROR CODE : %d\n", error_code); + break; - if( (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE) ) !=0) - printf("ATOMIC_AGGREGATE\n"); + } +} - if( (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_AGGREGATOR) ) !=0) - printf("AGGREGATOR: AS%d %s\n",attr->aggregator_as,inet_ntoa(attr->aggregator_addr)); +void +process(BGPDUMP_ENTRY * entry) +{ + struct tm *time; + char time_str[128]; + char time_str2[128]; + char prefix[BGPDUMP_ADDRSTRLEN]; + + time = gmtime(&entry->time); + time2str(time, time_str); + if (mode == 0) + printf("TIME: %s\n", time_str); + + // printf("TIME: %s",asctime(gmtime(&entry->time))); + // printf("LENGTH : %u\n", entry->length); + switch (entry->type) { + case BGPDUMP_TYPE_MRTD_TABLE_DUMP: + if (mode == 0) { +#ifdef BGPDUMP_HAVE_IPV6 + if (entry->subtype == AFI_IP6) + printf("TYPE: TABLE_DUMP/INET6\n"); + else +#endif + printf("TYPE: TABLE_DUMP/INET\n"); + printf("VIEW: %d\n", entry->body.mrtd_table_dump.view); + printf("SEQUENCE: %d\n", entry->body.mrtd_table_dump.sequence); +#ifdef BGPDUMP_HAVE_IPV6 + if (entry->subtype == AFI_IP6) + printf("PREFIX: %s/%d\n", + inet_ntop(AF_INET6, + &entry->body.mrtd_table_dump.prefix. + v6_addr, prefix, sizeof(prefix)), + entry->body.mrtd_table_dump.mask); + else +#endif + printf("PREFIX: %s/%d\n", + inet_ntoa(entry->body.mrtd_table_dump.prefix. + v4_addr), + entry->body.mrtd_table_dump.mask); + printf("FROM:"); + switch (entry->subtype) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + + inet_ntop(AF_INET6, + &entry->body.mrtd_table_dump.peer_ip.v6_addr, + prefix, sizeof(prefix)); + printf(" %s ", prefix); + break; +#endif + case AFI_IP: + default: + if (entry->body.mrtd_table_dump.peer_ip.v4_addr.s_addr != + 0x00000000L) + printf(" %s ", + inet_ntoa(entry->body.mrtd_table_dump.peer_ip. + v4_addr)); + else + printf(" N/A "); + } + printf("AS%d\n", entry->body.mrtd_table_dump.peer_as); - if (attr->unknown_num) + // printf("FROM: %s + // AS%d\n",inet_ntoa(entry->body.mrtd_table_dump.peer_ip.v4_addr),entry->body.mrtd_table_dump.peer_as); + // time2str(localtime(&entry->body.mrtd_table_dump.uptime),time_str2); + time2str(gmtime(&entry->body.mrtd_table_dump.uptime), + time_str2); + printf("ORIGINATED: %s\n", time_str2); + if (entry->attr && entry->attr->len) + show_attr(entry->attr); + + printf("STATUS: 0x%x\n", entry->body.mrtd_table_dump.status); + + // printf(" UPTIME : + // %s",asctime(gmtime(&entry->body.mrtd_table_dump.uptime))); + // printf(" PEER IP : + // %s\n",inet_ntoa(entry->body.mrtd_table_dump.peer_ip)); + // printf(" PEER IP : + // %s\n",inet_ntoa(entry->body.mrtd_table_dump.peer_ip.v4_addr)); + // printf(" PEER AS : + // %d\n",entry->body.mrtd_table_dump.peer_as); + } else if (mode == 1 || mode == 2) // -m -M + { + table_line_mrtd_route(mode, &entry->body.mrtd_table_dump, + entry, timetype); + } + break; + case BGPDUMP_TYPE_MRTD_BGP: + switch (entry->subtype) { + case BGPDUMP_SUBTYPE_MRTD_BGP_UPDATE: + if (mode == 0) { + printf("TYPE: BGP4MP/MESSAGE/Update\n"); + if (entry->body.mrtd_message.source_as) { + printf("FROM:"); + if (entry->body.mrtd_message.source_ip.s_addr != + 0x00000000L) + printf(" %s ", + inet_ntoa(entry->body.mrtd_message. + source_ip)); + else + printf(" N/A "); + printf("AS%d\n", entry->body.mrtd_message.source_as); + } + if (entry->body.mrtd_message.destination_as) { + printf("TO:"); + if (entry->body.mrtd_message.destination_ip.s_addr != + 0x00000000L) + printf(" %s ", + inet_ntoa(entry->body.mrtd_message. + destination_ip)); + else + printf(" N/A "); + printf("AS%d\n", + entry->body.mrtd_message.destination_as); + } + if (entry->attr && entry->attr->len) + show_attr(entry->attr); + if (entry->body.mrtd_message.withdraw_count) { + printf("WITHDRAW\n"); + show_prefixes(entry->body.mrtd_message.withdraw_count, + entry->body.mrtd_message.withdraw); + } + if (entry->body.mrtd_message.announce_count) { + printf("ANNOUNCE\n"); + show_prefixes(entry->body.mrtd_message.announce_count, + entry->body.mrtd_message.announce); + } + } else if (mode == 1 || mode == 2) // -m -M { - u_int32_t index,len; - u_char *p; - - for (index=0;indexunknown_num;index++) - { - printf(" UNKNOWN_ATTR :"); - p = attr->unknown[index].raw; - if(p[0] & BGP_ATTR_FLAG_EXTLEN) { - len = attr->unknown[index].real_len + 4; - } else { - len = attr->unknown[index].real_len + 3; - } - - while (len) { - printf(" %02x", *p); - p++; - len--; - } - printf("\n"); - } + if (entry->body.mrtd_message.withdraw_count) + table_line_withdraw(mode, + entry->body.mrtd_message.withdraw, + entry->body.mrtd_message. + withdraw_count, entry, time_str); + if (entry->body.mrtd_message.announce_count) + table_line_announce(mode, + entry->body.mrtd_message.announce, + entry->body.mrtd_message. + announce_count, entry, time_str); + } + break; + case BGPDUMP_SUBTYPE_MRTD_BGP_NOTIFY: + if (mode != 0) + break; + printf("TYPE: BGP4MP/MESSAGE/Notify\n"); + if (entry->body.mrtd_message.source_as) { + printf("FROM:"); + if (entry->body.mrtd_message.source_ip.s_addr != 0x00000000L) + printf(" %s ",inet_ntoa(entry->body.mrtd_message.source_ip)); + else + printf(" N/A "); + printf("AS%d\n", entry->body.mrtd_message.source_as); + } + if (entry->body.mrtd_message.destination_as) { + printf("TO:"); + if (entry->body.mrtd_message.destination_ip.s_addr != 0x00000000L) + printf(" %s ",inet_ntoa(entry->body.mrtd_message.destination_ip)); + else + printf(" N/A "); + printf("AS%d\n", entry->body.mrtd_message.destination_as); + } + print_notify_message(entry->body.mrtd_message.error_code, entry->body.mrtd_message.sub_error_code); + break; + case BGPDUMP_SUBTYPE_MRTD_BGP_OPEN: + if (mode != 0) + break; + printf("TYPE: BGP4MP/MESSAGE/Open\n"); + if (entry->body.mrtd_message.source_as) { + printf("FROM:"); + if (entry->body.mrtd_message.source_ip.s_addr != 0x00000000L) + printf(" %s ",inet_ntoa(entry->body.mrtd_message.source_ip)); + else + printf(" N/A "); + printf("AS%d\n", entry->body.mrtd_message.source_as); + } + if (entry->body.mrtd_message.destination_as) { + printf("TO:"); + if (entry->body.mrtd_message.destination_ip.s_addr != 0x00000000L) + printf(" %s ",inet_ntoa(entry->body.mrtd_message.destination_ip)); + else + printf(" N/A "); + printf("AS%d\n", entry->body.mrtd_message.destination_as); + } + printf("VERSION: %d\n", entry->body.mrtd_message.version); + printf("AS: %d\n", entry->body.mrtd_message.my_as); + printf("HOLD_TIME: %d\n", + entry->body.mrtd_message.hold_time); + printf("ID: %s\n", + inet_ntoa(entry->body.mrtd_message.bgp_id)); + printf("OPT_PARM_LEN: %d\n", + entry->body.mrtd_message.opt_len); + break; + case BGPDUMP_SUBTYPE_MRTD_BGP_KEEPALIVE: + if (mode != 0) + break; + printf("TYPE: BGP4MP/MESSAGE/Keepalive\n"); + if (entry->body.mrtd_message.source_as) { + printf("FROM:"); + if (entry->body.mrtd_message.source_ip.s_addr != 0x00000000L) + printf(" %s ",inet_ntoa(entry->body.mrtd_message.source_ip)); + else + printf(" N/A "); + printf("AS%d\n", entry->body.mrtd_message.source_as); + } + if (entry->body.mrtd_message.destination_as) { + printf("TO:"); + if (entry->body.mrtd_message.destination_ip.s_addr != 0x00000000L) + printf(" %s ",inet_ntoa(entry->body.mrtd_message.destination_ip)); + else + printf(" N/A "); + printf("AS%d\n", entry->body.mrtd_message.destination_as); } - if( (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MP_REACH_NLRI) )!=0) + break; + case BGPDUMP_SUBTYPE_MRTD_BGP_STATE_CHANGE: + if (mode == 0) { + printf("TYPE: BGP4MP/STATE_CHANGE\n"); + printf("PEER:"); + if (entry->body.mrtd_message.source_ip.s_addr != 0x00000000L) + printf(" %s ",inet_ntoa(entry->body.mrtd_message.source_ip)); + else + printf(" N/A "); + printf("AS%d\n", entry->body.mrtd_state_change.source_as); + printf("STATE: %s/%s\n", + bgp_state_name[entry->body.mrtd_state_change. + old_state], + bgp_state_name[entry->body.mrtd_state_change. + new_state]); + } else if (mode == 1 || mode == 2) // -m -M { - printf("MP_REACH_NLRI"); + if (mode == 1) + printf("BGP4MP|%ld|STATE|%s|%d|%d|%d\n", + entry->time, + inet_ntoa(entry->body.mrtd_state_change. + source_ip), + entry->body.mrtd_state_change.source_as, + entry->body.mrtd_state_change.old_state, + entry->body.mrtd_state_change.new_state); + else + printf("BGP4MP|%s|STATE|%s|%d|%d|%d\n", time_str, + inet_ntoa(entry->body.mrtd_state_change. + source_ip), + entry->body.mrtd_state_change.source_as, + entry->body.mrtd_state_change.old_state, + entry->body.mrtd_state_change.new_state); + } + break; + } + break; + case BGPDUMP_TYPE_ZEBRA_BGP: + switch (entry->subtype) { + case BGPDUMP_SUBTYPE_ZEBRA_BGP_MESSAGE: + switch (entry->body.zebra_message.type) { + case BGP_MSG_UPDATE: + if (mode == 0) { + printf("TYPE: BGP4MP/MESSAGE/Update\n"); + if (entry->body.zebra_message.source_as) { + printf("FROM:"); + switch (entry->body.zebra_message.address_family) { #ifdef BGPDUMP_HAVE_IPV6 - if (attr->mp_info->announce[AFI_IP6][SAFI_UNICAST] || attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST] || attr->mp_info->announce[AFI_IP6][SAFI_UNICAST_MULTICAST]) - - { - char buf[128]; - - if (attr->mp_info->announce[AFI_IP6][SAFI_UNICAST]) - { - printf("(IPv6 Unicast)\n"); - printf("NEXT_HOP: %s\n",inet_ntop(AF_INET6,&attr->mp_info->announce[AFI_IP6][SAFI_UNICAST]->nexthop.v6_addr,buf,128)); - if (attr->mp_info->announce[AFI_IP6][SAFI_UNICAST]->nexthop_len==32) - printf("NEXT_HOP: %s\n",inet_ntop(AF_INET6,&attr->mp_info->announce[AFI_IP6][SAFI_UNICAST]->nexthop_local.v6_addr,buf,128)); - } - else if (attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST]) - { - printf("(IPv6 Multicast)\n"); - printf("NEXT_HOP: %s\n",inet_ntop(AF_INET6,&attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST]->nexthop.v6_addr,buf,128)); - if (attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST]->nexthop_len==32) - printf("NEXT_HOP: %s\n",inet_ntop(AF_INET6,&attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST]->nexthop_local.v6_addr,buf,128)); - - } - else - { - printf("(IPv6 Both unicast and multicast)\n"); - printf("NEXT_HOP: %s\n",inet_ntop(AF_INET6,&attr->mp_info->announce[AFI_IP6][SAFI_UNICAST_MULTICAST]->nexthop.v6_addr,buf,128)); - if (attr->mp_info->announce[AFI_IP6][SAFI_UNICAST_MULTICAST]->nexthop_len==32) - printf("NEXT_HOP: %s\n",inet_ntop(AF_INET6,&attr->mp_info->announce[AFI_IP6][SAFI_UNICAST_MULTICAST]->nexthop_local.v6_addr,buf,128)); + case AFI_IP6: + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip. + v6_addr, prefix, sizeof(prefix)); + printf(" %s ", prefix); + break; +#endif + case AFI_IP: + default: + if (entry->body.zebra_message.source_ip. + v4_addr.s_addr != 0x00000000L) + printf(" %s ", + inet_ntoa(entry->body.zebra_message. + source_ip.v4_addr)); + else + printf(" N/A "); + } + printf("AS%d\n", + entry->body.zebra_message.source_as); + } + if (entry->body.zebra_message.destination_as) { + printf("TO:"); + switch (entry->body.zebra_message.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: - } + inet_ntop(AF_INET6, + &entry->body.zebra_message. + destination_ip.v6_addr, prefix, + sizeof(prefix)); + printf(" %s ", prefix); + break; +#endif + case AFI_IP: + default: + if (entry->body.zebra_message.destination_ip. + v4_addr.s_addr != 0x00000000L) + printf(" %s ", + inet_ntoa(entry->body.zebra_message. + destination_ip.v4_addr)); + else + printf(" N/A "); + } + printf("AS%d\n", + entry->body.zebra_message.destination_as); } - else + if (entry->attr && entry->attr->len) + show_attr(entry->attr); + if (entry->body.zebra_message.cut_bytes) { + u_int16_t cutted, + index; + u_int8_t buf[128]; + + printf(" INCOMPLETE PACKET: %d bytes cutted\n", + entry->body.zebra_message.cut_bytes); + printf(" INCOMPLETE PART: "); + if (entry->body.zebra_message.incomplete.orig_len) { + cutted = + entry->body.zebra_message.incomplete. + prefix.len / 8 + 1; + buf[0] = + entry->body.zebra_message.incomplete. + orig_len; + memcpy(buf + 1, + &entry->body.zebra_message.incomplete. + prefix.address, cutted - 1); + + for (index = 0; index < cutted; index++) { + if (buf[index] < 0x10) + printf("0%x ", buf[index]); + else + printf("%x ", buf[index]); + } + } + printf("\n"); + } + if ((entry->body.zebra_message.withdraw_count) + || (entry->attr-> + flag & + ATTR_FLAG_BIT(BGP_ATTR_MP_UNREACH_NLRI))) { +#ifdef BGPDUMP_HAVE_IPV6 + if ((entry->body.zebra_message.withdraw_count) + || (entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST]-> + prefix_count) + || (entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_MULTICAST]-> + prefix_count) + || (entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]-> + prefix_count) + || (entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_UNICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_UNICAST]-> + prefix_count) + || (entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_MULTICAST]-> + prefix_count) + || (entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST]-> + prefix_count)) +#else + if ((entry->body.zebra_message.withdraw_count) + || (entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST]-> + prefix_count) + || (entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_MULTICAST]-> + prefix_count) + || (entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]-> + prefix_count)) +#endif + printf("WITHDRAW\n"); + if (entry->body.zebra_message.withdraw_count) + show_prefixes(entry->body.zebra_message. + withdraw_count, + entry->body.zebra_message. + withdraw); + if (entry->attr->mp_info) { + if (entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST]-> + prefix_count) + show_prefixes(entry->attr->mp_info-> + withdraw[AFI_IP] + [SAFI_UNICAST]->prefix_count, + entry->attr->mp_info-> + withdraw[AFI_IP] + [SAFI_UNICAST]->nlri); + + if (entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_MULTICAST]-> + prefix_count) + show_prefixes(entry->attr->mp_info-> + withdraw[AFI_IP] + [SAFI_MULTICAST]-> + prefix_count, + entry->attr->mp_info-> + withdraw[AFI_IP] + [SAFI_MULTICAST]->nlri); + + if (entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]-> + prefix_count) + show_prefixes(entry->attr->mp_info-> + withdraw[AFI_IP] + [SAFI_UNICAST_MULTICAST]-> + prefix_count, + entry->attr->mp_info-> + withdraw[AFI_IP] + [SAFI_UNICAST_MULTICAST]-> + nlri); + +#ifdef BGPDUMP_HAVE_IPV6 + if (entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_UNICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_UNICAST]-> + prefix_count) + show_prefixes6(entry->attr->mp_info-> + withdraw[AFI_IP6] + [SAFI_UNICAST]-> + prefix_count, + entry->attr->mp_info-> + withdraw[AFI_IP6] + [SAFI_UNICAST]->nlri); + + if (entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_MULTICAST]-> + prefix_count) + show_prefixes6(entry->attr->mp_info-> + withdraw[AFI_IP6] + [SAFI_MULTICAST]-> + prefix_count, + entry->attr->mp_info-> + withdraw[AFI_IP6] + [SAFI_MULTICAST]->nlri); + + if (entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST]-> + prefix_count) + show_prefixes6(entry->attr->mp_info-> + withdraw[AFI_IP6] + [SAFI_UNICAST_MULTICAST]-> + prefix_count, + entry->attr->mp_info-> + withdraw[AFI_IP6] + [SAFI_UNICAST_MULTICAST]-> + nlri); #endif + } + } + if ((entry->body.zebra_message.announce_count) + || (entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_MP_REACH_NLRI))) { - - if (attr->mp_info->announce[AFI_IP][SAFI_UNICAST]) - { - printf("(IPv4 Unicast)\n"); - printf("NEXT_HOP: %s\n",inet_ntoa(attr->mp_info->announce[AFI_IP][SAFI_UNICAST]->nexthop.v4_addr)); - if (attr->mp_info->announce[AFI_IP][SAFI_UNICAST]->nexthop_len==32) - printf("NEXT_HOP: %s\n",inet_ntoa(attr->mp_info->announce[AFI_IP][SAFI_UNICAST]->nexthop_local.v4_addr)); - - } - else if (attr->mp_info->announce[AFI_IP][SAFI_MULTICAST]) - { - printf("(IPv4 Multicast)\n"); - printf("NEXT_HOP: %s\n",inet_ntoa(attr->mp_info->announce[AFI_IP][SAFI_MULTICAST]->nexthop.v4_addr)); - if (attr->mp_info->announce[AFI_IP][SAFI_MULTICAST]->nexthop_len==32) - printf("NEXT_HOP: %s\n",inet_ntoa(attr->mp_info->announce[AFI_IP][SAFI_MULTICAST]->nexthop_local.v4_addr)); - - - } - else if (attr->mp_info->announce[AFI_IP][SAFI_UNICAST_MULTICAST]) - { - printf("(IPv4 Both unicast and multicast)\n"); - printf("NEXT_HOP: %s\n",inet_ntoa(attr->mp_info->announce[AFI_IP][SAFI_UNICAST_MULTICAST]->nexthop.v4_addr)); - if (attr->mp_info->announce[AFI_IP][SAFI_UNICAST_MULTICAST]->nexthop_len==32) - printf("NEXT_HOP: %s\n",inet_ntoa(attr->mp_info->announce[AFI_IP][SAFI_UNICAST_MULTICAST]->nexthop_local.v4_addr)); - - - } - + printf("ANNOUNCE\n"); + if (entry->body.zebra_message.announce_count) + show_prefixes(entry->body.zebra_message. + announce_count, + entry->body.zebra_message. + announce); + if (entry->attr->mp_info) { + if (entry->attr->mp_info-> + announce[AFI_IP][SAFI_UNICAST] + && entry->attr->mp_info-> + announce[AFI_IP][SAFI_UNICAST]-> + prefix_count) + show_prefixes(entry->attr->mp_info-> + announce[AFI_IP] + [SAFI_UNICAST]->prefix_count, + entry->attr->mp_info-> + announce[AFI_IP] + [SAFI_UNICAST]->nlri); + + if (entry->attr->mp_info-> + announce[AFI_IP][SAFI_MULTICAST] + && entry->attr->mp_info-> + announce[AFI_IP][SAFI_MULTICAST]-> + prefix_count) + show_prefixes(entry->attr->mp_info-> + announce[AFI_IP] + [SAFI_MULTICAST]-> + prefix_count, + entry->attr->mp_info-> + announce[AFI_IP] + [SAFI_MULTICAST]->nlri); + + if (entry->attr->mp_info-> + announce[AFI_IP][SAFI_UNICAST_MULTICAST] + && entry->attr->mp_info-> + announce[AFI_IP][SAFI_UNICAST_MULTICAST]-> + prefix_count) + show_prefixes(entry->attr->mp_info-> + announce[AFI_IP] + [SAFI_UNICAST_MULTICAST]-> + prefix_count, + entry->attr->mp_info-> + announce[AFI_IP] + [SAFI_UNICAST_MULTICAST]-> + nlri); + +#ifdef BGPDUMP_HAVE_IPV6 + if (entry->attr->mp_info-> + announce[AFI_IP6][SAFI_UNICAST] + && entry->attr->mp_info-> + announce[AFI_IP6][SAFI_UNICAST]-> + prefix_count) + show_prefixes6(entry->attr->mp_info-> + announce[AFI_IP6] + [SAFI_UNICAST]-> + prefix_count, + entry->attr->mp_info-> + announce[AFI_IP6] + [SAFI_UNICAST]->nlri); + + if (entry->attr->mp_info-> + announce[AFI_IP6][SAFI_MULTICAST] + && entry->attr->mp_info-> + announce[AFI_IP6][SAFI_MULTICAST]-> + prefix_count) + show_prefixes6(entry->attr->mp_info-> + announce[AFI_IP6] + [SAFI_MULTICAST]-> + prefix_count, + entry->attr->mp_info-> + announce[AFI_IP6] + [SAFI_MULTICAST]->nlri); + + if (entry->attr->mp_info-> + announce[AFI_IP6][SAFI_UNICAST_MULTICAST] + && entry->attr->mp_info-> + announce[AFI_IP6][SAFI_UNICAST_MULTICAST]-> + prefix_count) + show_prefixes6(entry->attr->mp_info-> + announce[AFI_IP6] + [SAFI_UNICAST_MULTICAST]-> + prefix_count, + entry->attr->mp_info-> + announce[AFI_IP6] + [SAFI_UNICAST_MULTICAST]-> + nlri); +#endif + } } - } - - if( (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MP_UNREACH_NLRI) )!=0) - { - printf("MP_UNREACH_NLRI"); -#ifdef BGPDUMP_HAVE_IPV6 - if (attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST] || attr->mp_info->withdraw[AFI_IP6][SAFI_MULTICAST] || attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST]) + } else if (mode == 1 || mode == 2) // -m -M + { + if ((entry->body.zebra_message.withdraw_count) + || (entry->attr-> + flag & + ATTR_FLAG_BIT(BGP_ATTR_MP_UNREACH_NLRI))) { + table_line_withdraw(mode, + entry->body.zebra_message. + withdraw, + entry->body.zebra_message. + withdraw_count, entry, + time_str); + if (entry->attr->mp_info) { + if (entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST]-> + prefix_count) + table_line_withdraw(mode, + entry->attr->mp_info-> + withdraw[AFI_IP] + [SAFI_UNICAST]->nlri, + entry->attr->mp_info-> + withdraw[AFI_IP] + [SAFI_UNICAST]-> + prefix_count, entry, + time_str); + if (entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_MULTICAST]-> + prefix_count) + table_line_withdraw(mode, + entry->attr->mp_info-> + withdraw[AFI_IP] + [SAFI_MULTICAST]->nlri, + entry->attr->mp_info-> + withdraw[AFI_IP] + [SAFI_MULTICAST]-> + prefix_count, entry, + time_str); + if (entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]-> + prefix_count) + table_line_withdraw(mode, + entry->attr->mp_info-> + withdraw[AFI_IP] + [SAFI_UNICAST_MULTICAST]-> + nlri, + entry->attr->mp_info-> + withdraw[AFI_IP] + [SAFI_UNICAST_MULTICAST]-> + prefix_count, entry, + time_str); + +#ifdef BGPDUMP_HAVE_IPV6 + if (entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_UNICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_UNICAST]-> + prefix_count) + table_line_withdraw6(mode, + entry->attr->mp_info-> + withdraw[AFI_IP6] + [SAFI_UNICAST]->nlri, + entry->attr->mp_info-> + withdraw[AFI_IP6] + [SAFI_UNICAST]-> + prefix_count, entry, + time_str); + if (entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_MULTICAST]-> + prefix_count) + table_line_withdraw6(mode, + entry->attr->mp_info-> + withdraw[AFI_IP6] + [SAFI_MULTICAST]-> + nlri, + entry->attr->mp_info-> + withdraw[AFI_IP6] + [SAFI_MULTICAST]-> + prefix_count, entry, + time_str); + if (entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST] + && entry->attr->mp_info-> + withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST]-> + prefix_count) + table_line_withdraw6(mode, + entry->attr->mp_info-> + withdraw[AFI_IP6] + [SAFI_UNICAST_MULTICAST]-> + nlri, + entry->attr->mp_info-> + withdraw[AFI_IP6] + [SAFI_UNICAST_MULTICAST]-> + prefix_count, entry, + time_str); +#endif - { - - if (attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST]) - { - printf("(IPv6 Unicast)\n"); - } - else if (attr->mp_info->withdraw[AFI_IP6][SAFI_MULTICAST]) - { - printf("(IPv6 Multicast)\n"); - - } - else - { - printf("(IPv6 Both unicast and multicast)\n"); + } - } } - else -#endif + if ((entry->body.zebra_message.announce_count) + || (entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_MP_REACH_NLRI))) { - - if (attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST]) - { - printf("(IPv4 Unicast)\n"); - - } - else if (attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST]) - { - printf("(IPv4 Multicast)\n"); - - - } - else if (attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]) - { - printf("(IPv4 Both unicast and multicast)\n"); - + table_line_announce(mode, + entry->body.zebra_message. + announce, + entry->body.zebra_message. + announce_count, entry, + time_str); + if (entry->attr->mp_info) { + if (entry->attr->mp_info-> + announce[AFI_IP][SAFI_UNICAST] + && entry->attr->mp_info-> + announce[AFI_IP][SAFI_UNICAST]-> + prefix_count) + table_line_announce_1(mode, + entry->attr-> + mp_info-> + announce[AFI_IP] + [SAFI_UNICAST], + entry->attr-> + mp_info-> + announce[AFI_IP] + [SAFI_UNICAST]-> + prefix_count, entry, + time_str); + if (entry->attr->mp_info-> + announce[AFI_IP][SAFI_MULTICAST] + && entry->attr->mp_info-> + announce[AFI_IP][SAFI_MULTICAST]-> + prefix_count) + table_line_announce_1(mode, + entry->attr-> + mp_info-> + announce[AFI_IP] + [SAFI_MULTICAST], + entry->attr-> + mp_info-> + announce[AFI_IP] + [SAFI_MULTICAST]-> + prefix_count, entry, + time_str); + if (entry->attr->mp_info-> + announce[AFI_IP][SAFI_UNICAST_MULTICAST] + && entry->attr->mp_info-> + announce[AFI_IP][SAFI_UNICAST_MULTICAST]-> + prefix_count) + table_line_announce_1(mode, + entry->attr-> + mp_info-> + announce[AFI_IP] + [SAFI_UNICAST_MULTICAST], + entry->attr-> + mp_info-> + announce[AFI_IP] + [SAFI_UNICAST_MULTICAST]-> + prefix_count, entry, + time_str); +#ifdef BGPDUMP_HAVE_IPV6 + if (entry->attr->mp_info-> + announce[AFI_IP6][SAFI_UNICAST] + && entry->attr->mp_info-> + announce[AFI_IP6][SAFI_UNICAST]-> + prefix_count) + table_line_announce6(mode, + entry->attr->mp_info-> + announce[AFI_IP6] + [SAFI_UNICAST], + entry->attr->mp_info-> + announce[AFI_IP6] + [SAFI_UNICAST]-> + prefix_count, entry, + time_str); + if (entry->attr->mp_info-> + announce[AFI_IP6][SAFI_MULTICAST] + && entry->attr->mp_info-> + announce[AFI_IP6][SAFI_MULTICAST]-> + prefix_count) + table_line_announce6(mode, + entry->attr->mp_info-> + announce[AFI_IP6] + [SAFI_MULTICAST], + entry->attr->mp_info-> + announce[AFI_IP6] + [SAFI_MULTICAST]-> + prefix_count, entry, + time_str); + if (entry->attr->mp_info-> + announce[AFI_IP6][SAFI_UNICAST_MULTICAST] + && entry->attr->mp_info-> + announce[AFI_IP6][SAFI_UNICAST_MULTICAST]-> + prefix_count) + table_line_announce6(mode, + entry->attr->mp_info-> + announce[AFI_IP6] + [SAFI_UNICAST_MULTICAST], + entry->attr->mp_info-> + announce[AFI_IP6] + [SAFI_UNICAST_MULTICAST]-> + prefix_count, entry, + time_str); +#endif + + } - } - } - } - if( (attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES) ) !=0) - printf("COMMUNITY:%s\n",attr->community->str); - } - -} + } + break; -void show_prefixes(int count,struct prefix *prefix) { - int i; - for(i=0;ibody.zebra_message.source_as) { + printf("FROM:"); + switch (entry->body.zebra_message.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip. + v6_addr, prefix, sizeof(prefix)); + printf(" %s ", prefix); + break; +#endif + case AFI_IP: + default: + if (entry->body.zebra_message.source_ip.v4_addr. + s_addr != 0x00000000L) + printf(" %s ", + inet_ntoa(entry->body.zebra_message. + source_ip.v4_addr)); + else + printf(" N/A "); + } + printf("AS%d\n", entry->body.zebra_message.source_as); + } + if (entry->body.zebra_message.destination_as) { + printf("TO:"); + switch (entry->body.zebra_message.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + + inet_ntop(AF_INET6, + &entry->body.zebra_message. + destination_ip.v6_addr, prefix, + sizeof(prefix)); + printf(" %s ", prefix); + break; +#endif + case AFI_IP: + default: + if (entry->body.zebra_message.destination_ip. + v4_addr.s_addr != 0x00000000L) + printf(" %s ", + inet_ntoa(entry->body.zebra_message. + destination_ip.v4_addr)); + else + printf(" N/A "); + } + printf("AS%d\n", + entry->body.zebra_message.destination_as); + } - for (i=0;ibody.zebra_message.version); + printf("AS: %d\n", entry->body.zebra_message.my_as); + printf("HOLD_TIME: %d\n", + entry->body.zebra_message.hold_time); + printf("ID: %s\n", + inet_ntoa(entry->body.zebra_message.bgp_id)); + printf("OPT_PARM_LEN: %d\n", + entry->body.zebra_message.opt_len); + break; + + case BGP_MSG_NOTIFY: + if (mode != 0) + break; + printf("TYPE: BGP4MP/MESSAGE/Notify\n"); + if (entry->body.zebra_message.source_as) { + printf("FROM:"); + switch (entry->body.zebra_message.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip. + v6_addr, prefix, sizeof(prefix)); + printf(" %s ", prefix); + break; +#endif + case AFI_IP: + default: + if (entry->body.zebra_message.source_ip.v4_addr. + s_addr != 0x00000000L) + printf(" %s ", + inet_ntoa(entry->body.zebra_message. + source_ip.v4_addr)); + else + printf(" N/A "); + } + printf("AS%d\n", entry->body.zebra_message.source_as); + } + if (entry->body.zebra_message.destination_as) { + printf("TO:"); + switch (entry->body.zebra_message.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + + inet_ntop(AF_INET6, + &entry->body.zebra_message. + destination_ip.v6_addr, prefix, + sizeof(prefix)); + printf(" %s ", prefix); + break; #endif + case AFI_IP: + default: + if (entry->body.zebra_message.destination_ip. + v4_addr.s_addr != 0x00000000L) + printf(" %s ", + inet_ntoa(entry->body.zebra_message. + destination_ip.v4_addr)); + else + printf(" N/A "); + } + printf("AS%d\n", + entry->body.zebra_message.destination_as); + } + print_notify_message(entry->body.zebra_message.error_code, entry->body.zebra_message.sub_error_code); + break; + case BGP_MSG_KEEPALIVE: + if (mode != 0) + break; -void table_line_withdraw(int mode,struct prefix *prefix,int count,BGPDUMP_ENTRY *entry,char *time_str) -{ - int index; - char buf[128]; - - for (index=0;indexbody.zebra_message.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - printf("BGP4MP|%ld|W|%s|%d|",entry->time,inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip.v6_addr,buf,128),entry->body.zebra_message.source_as); - break; + printf("TYPE: BGP4MP/MESSAGE/Keepalive\n"); + if (entry->body.zebra_message.source_as) { + printf("FROM:"); + switch (entry->body.zebra_message.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip. + v6_addr, prefix, sizeof(prefix)); + printf(" %s ", prefix); + break; #endif - case AFI_IP: - default: - printf("BGP4MP|%ld|W|%s|%d|",entry->time,inet_ntoa(entry->body.zebra_message.source_ip.v4_addr),entry->body.zebra_message.source_as); - break; - } - printf("%s/%d\n",inet_ntoa(prefix[index].address.v4_addr),prefix[index].len); + case AFI_IP: + default: + if (entry->body.zebra_message.source_ip.v4_addr. + s_addr != 0x00000000L) + printf(" %s ", + inet_ntoa(entry->body.zebra_message. + source_ip.v4_addr)); + else + printf(" N/A "); + } + printf("AS%d\n", entry->body.zebra_message.source_as); } - else - { - switch(entry->body.zebra_message.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - printf("BGP4MP|%s|W|%s|%d|",time_str,inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip.v6_addr,buf,128),entry->body.zebra_message.source_as); - break; + if (entry->body.zebra_message.destination_as) { + printf("TO:"); + switch (entry->body.zebra_message.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + + inet_ntop(AF_INET6, + &entry->body.zebra_message. + destination_ip.v6_addr, prefix, + sizeof(prefix)); + printf(" %s ", prefix); + break; #endif - case AFI_IP: - default: - printf("BGP4MP|%s|W|%s|%d|",time_str,inet_ntoa(entry->body.zebra_message.source_ip.v4_addr),entry->body.zebra_message.source_as); - break; - } - printf("%s/%d\n",inet_ntoa(prefix[index].address.v4_addr),prefix[index].len); + case AFI_IP: + default: + if (entry->body.zebra_message.destination_ip. + v4_addr.s_addr != 0x00000000L) + printf(" %s ", + inet_ntoa(entry->body.zebra_message. + destination_ip.v4_addr)); + else + printf(" N/A "); + } + printf("AS%d\n", + entry->body.zebra_message.destination_as); } - - } -} + break; + } + break; + case BGPDUMP_SUBTYPE_ZEBRA_BGP_STATE_CHANGE: + if (mode == 0) { + printf("TYPE: BGP4MP/STATE_CHANGE\n"); + printf("PEER:"); + switch (entry->body.zebra_state_change.address_family) { #ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: -void table_line_withdraw6(int mode,struct prefix *prefix,int count,BGPDUMP_ENTRY *entry,char *time_str) -{ - int index; - char buf[128]; - char buf1[128]; + inet_ntop(AF_INET6, + &entry->body.zebra_state_change.source_ip. + v6_addr, prefix, sizeof(prefix)); + printf(" %s ", prefix); + break; +#endif + case AFI_IP: + default: + if (entry->body.zebra_state_change.source_ip.v4_addr. + s_addr != 0x00000000L) + printf(" %s ", + inet_ntoa(entry->body.zebra_message. + source_ip.v4_addr)); + else + printf(" N/A "); + } + // if (entry->body.zebra_message.source_ip.s_addr != + // 0x00000000L) + // printf(" %s + // ",inet_ntoa(entry->body.zebra_message.source_ip)); + // else + // printf(" N/A "); + printf("AS%d\n", entry->body.zebra_state_change.source_as); + printf("STATE: %s/%s\n", + bgp_state_name[entry->body.zebra_state_change. + old_state], + bgp_state_name[entry->body.zebra_state_change. + new_state]); + } else if (mode == 1 || mode == 2) // -m -M + { + switch (entry->body.zebra_state_change.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + + inet_ntop(AF_INET6, + &entry->body.zebra_state_change.source_ip. + v6_addr, prefix, sizeof(prefix)); + if (mode == 1) + printf("BGP4MP|%ld|STATE|%s|%d|%d|%d\n", + entry->time, prefix, + entry->body.zebra_state_change.source_as, + entry->body.zebra_state_change.old_state, + entry->body.zebra_state_change.new_state); + else + printf("BGP4MP|%s|STATE|%s|%d|%d|%d\n", time_str, + prefix, + entry->body.zebra_state_change.source_as, + entry->body.zebra_state_change.old_state, + entry->body.zebra_state_change.new_state); + break; +#endif + case AFI_IP: + default: + if (mode == 1) + printf("BGP4MP|%ld|STATE|%s|%d|%d|%d\n", + entry->time, + inet_ntoa(entry->body.zebra_state_change. + source_ip.v4_addr), + entry->body.zebra_state_change.source_as, + entry->body.zebra_state_change.old_state, + entry->body.zebra_state_change.new_state); + else + printf("BGP4MP|%s|STATE|%s|%d|%d|%d\n", time_str, + inet_ntoa(entry->body.zebra_state_change. + source_ip.v4_addr), + entry->body.zebra_state_change.source_as, + entry->body.zebra_state_change.old_state, + entry->body.zebra_state_change.new_state); + break; - for (index=0;indexbody.zebra_message.address_family) - { - case AFI_IP6: - printf("BGP4MP|%ld|W|%s|%d|%s/%d\n",entry->time,inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip,buf1,128),entry->body.zebra_message.source_as,inet_ntop(AF_INET6,&prefix[index].address.v6_addr,buf,128),prefix[index].len); - break; - case AFI_IP: - default: - printf("BGP4MP|%ld|W|%s|%d|%s/%d\n",entry->time,inet_ntop(AF_INET,&entry->body.zebra_message.source_ip,buf1,128),entry->body.zebra_message.source_as,inet_ntop(AF_INET6,&prefix[index].address.v6_addr,buf,128),prefix[index].len); - break; - } - } - else - { - switch(entry->body.zebra_message.address_family) - { - case AFI_IP6: - printf("BGP4MP|%s|W|%s|%d|%s/%d\n",time_str,inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip,buf1,128),entry->body.zebra_message.source_as,inet_ntop(AF_INET6,&prefix[index].address.v6_addr,buf,128),prefix[index].len); - break; - case AFI_IP: - default: - printf("BGP4MP|%s|W|%s|%d|%s/%d\n",time_str,inet_ntop(AF_INET,&entry->body.zebra_message.source_ip,buf1,128),entry->body.zebra_message.source_as,inet_ntop(AF_INET6,&prefix[index].address.v6_addr,buf,128),prefix[index].len); - break; - } } + } + break; } + break; + } + if (mode == 0) + printf("\n"); } -#endif -void table_line_announce(int mode,struct prefix *prefix,int count,BGPDUMP_ENTRY *entry,char *time_str) +void +show_attr(struct attr *attr) { - int index ; - char buf[128]; - //char buf1[128]; - //char buf2[128]; - char tmp1[20]; - char tmp2[20]; - int npref; - int nmed; - - switch (entry->attr->origin) - { - case 0 : - sprintf(tmp1,"IGP"); - break; - case 1: - sprintf(tmp1,"EGP"); + if (attr != NULL) { + + if ((attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ORIGIN)) != 0) { + switch (attr->origin) { + case 0: + printf("ORIGIN: IGP\n"); break; - case 2: - default: - sprintf(tmp1,"INCOMPLETE"); + case 1: + printf("ORIGIN: EGP\n"); break; + case 2: + printf("ORIGIN: INCOMPLETE\n"); + + } + } - if (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE)) - sprintf(tmp2,"AG"); - else - sprintf(tmp2,"NAG"); - for (index=0;indexbody.zebra_message.address_family) - { + if ((attr->flag & ATTR_FLAG_BIT(BGP_ATTR_AS_PATH)) != 0) + printf("ASPATH: %s\n", attr->aspath->str); + + if ((attr->flag & ATTR_FLAG_BIT(BGP_ATTR_NEXT_HOP)) != 0) + printf("NEXT_HOP: %s\n", inet_ntoa(attr->nexthop)); + + if ((attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC)) != 0) + printf("MULTI_EXIT_DISC: %d\n", attr->med); + + if ((attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF)) != 0) + printf("LOCAL_PREF: %d\n", attr->local_pref); + + if ((attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE)) != 0) + printf("ATOMIC_AGGREGATE\n"); + + if ((attr->flag & ATTR_FLAG_BIT(BGP_ATTR_AGGREGATOR)) != 0) + printf("AGGREGATOR: AS%d %s\n", attr->aggregator_as, + inet_ntoa(attr->aggregator_addr)); + + if (attr->unknown_num) { + u_int32_t index, + len; + u_char *p; + + for (index = 0; index < attr->unknown_num; index++) { + printf(" UNKNOWN_ATTR :"); + p = attr->unknown[index].raw; + if (p[0] & BGP_ATTR_FLAG_EXTLEN) { + len = attr->unknown[index].real_len + 4; + } else { + len = attr->unknown[index].real_len + 3; + } + + while (len) { + printf(" %02x", *p); + p++; + len--; + } + printf("\n"); + } + } + if ((attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MP_REACH_NLRI)) != 0) { + printf("MP_REACH_NLRI"); #ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - printf("BGP4MP|%ld|A|%s|%d|",entry->time,inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip,buf,128),entry->body.zebra_message.source_as); - break; + if (attr->mp_info->announce[AFI_IP6][SAFI_UNICAST] + || attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST] + || attr->mp_info-> + announce[AFI_IP6][SAFI_UNICAST_MULTICAST]) { + char buf[128]; + + if (attr->mp_info->announce[AFI_IP6][SAFI_UNICAST]) { + printf("(IPv6 Unicast)\n"); + printf("NEXT_HOP: %s\n", + inet_ntop(AF_INET6, + &attr->mp_info-> + announce[AFI_IP6][SAFI_UNICAST]-> + nexthop.v6_addr, buf, 128)); + if (attr->mp_info->announce[AFI_IP6][SAFI_UNICAST]-> + nexthop_len == 32) + printf("NEXT_HOP: %s\n", + inet_ntop(AF_INET6, + &attr->mp_info-> + announce[AFI_IP6][SAFI_UNICAST]-> + nexthop_local.v6_addr, buf, 128)); + } else if (attr->mp_info-> + announce[AFI_IP6][SAFI_MULTICAST]) { + printf("(IPv6 Multicast)\n"); + printf("NEXT_HOP: %s\n", + inet_ntop(AF_INET6, + &attr->mp_info-> + announce[AFI_IP6][SAFI_MULTICAST]-> + nexthop.v6_addr, buf, 128)); + if (attr->mp_info->announce[AFI_IP6][SAFI_MULTICAST]-> + nexthop_len == 32) + printf("NEXT_HOP: %s\n", + inet_ntop(AF_INET6, + &attr->mp_info->announce[AFI_IP6] + [SAFI_MULTICAST]->nexthop_local. + v6_addr, buf, 128)); + + } else { + printf("(IPv6 Both unicast and multicast)\n"); + printf("NEXT_HOP: %s\n", + inet_ntop(AF_INET6, + &attr->mp_info->announce[AFI_IP6] + [SAFI_UNICAST_MULTICAST]->nexthop. + v6_addr, buf, 128)); + if (attr->mp_info-> + announce[AFI_IP6][SAFI_UNICAST_MULTICAST]-> + nexthop_len == 32) + printf("NEXT_HOP: %s\n", + inet_ntop(AF_INET6, + &attr->mp_info->announce[AFI_IP6] + [SAFI_UNICAST_MULTICAST]-> + nexthop_local.v6_addr, buf, 128)); + + + } + } else #endif - case AFI_IP: - default: - printf("BGP4MP|%ld|A|%s|%d|",entry->time,inet_ntoa(entry->body.zebra_message.source_ip.v4_addr),entry->body.zebra_message.source_as); - break; - } - printf("%s/%d|%s|%s|",inet_ntoa(prefix[index].address.v4_addr),prefix[index].len,entry->attr->aspath->str,tmp1); - npref=entry->attr->local_pref; - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF) ) ==0) - npref=0; - nmed=entry->attr->med; - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC) ) ==0) - nmed=0; - - printf("%s|%d|%d|",inet_ntoa(entry->attr->nexthop),npref,nmed); - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES) ) !=0) - printf("%s|%s|",entry->attr->community->str+1,tmp2); - else - printf("|%s|",tmp2); - - if (entry->attr->aggregator_addr.s_addr != -1) - printf("%s|\n",inet_ntoa(entry->attr->aggregator_addr)); - else - printf("|\n"); + { + + if (attr->mp_info->announce[AFI_IP][SAFI_UNICAST]) { + printf("(IPv4 Unicast)\n"); + printf("NEXT_HOP: %s\n", + inet_ntoa(attr->mp_info-> + announce[AFI_IP][SAFI_UNICAST]-> + nexthop.v4_addr)); + if (attr->mp_info->announce[AFI_IP][SAFI_UNICAST]-> + nexthop_len == 32) + printf("NEXT_HOP: %s\n", + inet_ntoa(attr->mp_info-> + announce[AFI_IP][SAFI_UNICAST]-> + nexthop_local.v4_addr)); + + } else if (attr->mp_info->announce[AFI_IP][SAFI_MULTICAST]) { + printf("(IPv4 Multicast)\n"); + printf("NEXT_HOP: %s\n", + inet_ntoa(attr->mp_info-> + announce[AFI_IP][SAFI_MULTICAST]-> + nexthop.v4_addr)); + if (attr->mp_info->announce[AFI_IP][SAFI_MULTICAST]-> + nexthop_len == 32) + printf("NEXT_HOP: %s\n", + inet_ntoa(attr->mp_info-> + announce[AFI_IP][SAFI_MULTICAST]-> + nexthop_local.v4_addr)); + + + } else if (attr->mp_info-> + announce[AFI_IP][SAFI_UNICAST_MULTICAST]) { + printf("(IPv4 Both unicast and multicast)\n"); + printf("NEXT_HOP: %s\n", + inet_ntoa(attr->mp_info->announce[AFI_IP] + [SAFI_UNICAST_MULTICAST]->nexthop. + v4_addr)); + if (attr->mp_info-> + announce[AFI_IP][SAFI_UNICAST_MULTICAST]-> + nexthop_len == 32) + printf("NEXT_HOP: %s\n", + inet_ntoa(attr->mp_info->announce[AFI_IP] + [SAFI_UNICAST_MULTICAST]-> + nexthop_local.v4_addr)); + + } - else - { - switch(entry->body.zebra_message.address_family) - { + + } + } + + if ((attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MP_UNREACH_NLRI)) != 0) { + printf("MP_UNREACH_NLRI"); #ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - printf("BGP4MP|%s|A|%s|%d|",time_str,inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip,buf,128),entry->body.zebra_message.source_as); - break; + if (attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST] + || attr->mp_info->withdraw[AFI_IP6][SAFI_MULTICAST] + || attr->mp_info-> + withdraw[AFI_IP6][SAFI_UNICAST_MULTICAST]) { + + if (attr->mp_info->withdraw[AFI_IP6][SAFI_UNICAST]) { + printf("(IPv6 Unicast)\n"); + } else if (attr->mp_info-> + withdraw[AFI_IP6][SAFI_MULTICAST]) { + printf("(IPv6 Multicast)\n"); + + } else { + printf("(IPv6 Both unicast and multicast)\n"); + + + } + } else #endif - case AFI_IP: - default: - printf("BGP4MP|%s|A|%s|%d|",time_str,inet_ntoa(entry->body.zebra_message.source_ip.v4_addr),entry->body.zebra_message.source_as); - break; - } - printf("%s/%d|%s|%s\n",inet_ntoa(prefix[index].address.v4_addr),prefix[index].len,entry->attr->aspath->str,tmp1); - + { + + if (attr->mp_info->withdraw[AFI_IP][SAFI_UNICAST]) { + printf("(IPv4 Unicast)\n"); + + } else if (attr->mp_info->withdraw[AFI_IP][SAFI_MULTICAST]) { + printf("(IPv4 Multicast)\n"); + + + } else if (attr->mp_info-> + withdraw[AFI_IP][SAFI_UNICAST_MULTICAST]) { + printf("(IPv4 Both unicast and multicast)\n"); + + } + + } } + if ((attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES)) != 0) + printf("COMMUNITY:%s\n", attr->community->str); + } } -void table_line_announce_1(int mode,struct mp_nlri *prefix,int count,BGPDUMP_ENTRY *entry,char *time_str) -{ - int index ; - char buf[128]; - //char buf1[128]; - //char buf2[128]; - char tmp1[20]; - char tmp2[20]; - int npref; - int nmed; - - switch (entry->attr->origin) - { - case 0 : - sprintf(tmp1,"IGP"); - break; - case 1: - sprintf(tmp1,"EGP"); - break; - case 2: - default: - sprintf(tmp1,"INCOMPLETE"); - break; - } - if (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE)) - sprintf(tmp2,"AG"); - else - sprintf(tmp2,"NAG"); +void +show_prefixes(int count, struct prefix *prefix) +{ + int i; + for (i = 0; i < count; i++) + printf(" %s/%d\n", inet_ntoa(prefix[i].address.v4_addr), + prefix[i].len); +} - for (index=0;indexattr->flag & ATTR_FLAG_BIT(BGP_ATTR_MP_REACH_NLRI)) - { - switch(entry->body.zebra_message.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - printf("BGP4MP|%ld|A|%s|%d|",entry->time,inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip,buf,128),entry->body.zebra_message.source_as); - break; -#endif - case AFI_IP: - default: - printf("BGP4MP|%ld|A|%s|%d|",entry->time,inet_ntoa(entry->body.zebra_message.source_ip.v4_addr),entry->body.zebra_message.source_as); - break; - } - printf("%s/%d|%s|%s|",inet_ntoa(prefix->nlri[index].address.v4_addr),prefix->nlri[index].len,entry->attr->aspath->str,tmp1); - - npref=entry->attr->local_pref; - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF) ) ==0) - npref=0; - nmed=entry->attr->med; - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC) ) ==0) - nmed=0; - - printf("%s|%d|%d|",inet_ntoa(entry->attr->nexthop),npref,nmed); - //printf("%s|%d|%d|",inet_ntoa(prefix->nexthop.v4_addr),entry->attr->local_pref,entry->attr->med); - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES) ) !=0) - printf("%s|%s|",entry->attr->community->str+1,tmp2); - else - printf("|%s|",tmp2); +#ifdef BGPDUMP_HAVE_IPV6 +void +show_prefixes6(int count, struct prefix *prefix) +{ + int i; + char buf[128]; - } - else - { - switch(entry->body.zebra_message.address_family) - { -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - printf("BGP4MP|%ld|A|%s|%d|",entry->time,inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip,buf,128),entry->body.zebra_message.source_as); - break; -#endif - case AFI_IP: - default: - printf("BGP4MP|%ld|A|%s|%d|",entry->time,inet_ntoa(entry->body.zebra_message.source_ip.v4_addr),entry->body.zebra_message.source_as); - break; - } - printf("%s/%d|%s|%s|",inet_ntoa(prefix->nlri[index].address.v4_addr),prefix->nlri[index].len,entry->attr->aspath->str,tmp1); - - npref=entry->attr->local_pref; - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF) ) ==0) - npref=0; - nmed=entry->attr->med; - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC) ) ==0) - nmed=0; - - printf("%s|%d|%d|",inet_ntoa(entry->attr->nexthop),npref,nmed); - //printf("%s|%d|%d|",inet_ntoa(entry->attr->nexthop),entry->attr->local_pref,entry->attr->med); - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES) ) !=0) - printf("%s|%s|",entry->attr->community->str+1,tmp2); - else - printf("|%s|",tmp2); + for (i = 0; i < count; i++) + printf(" %s/%d\n", + inet_ntop(AF_INET6, &prefix[i].address.v6_addr, buf, 128), + prefix[i].len); +} +#endif +void +table_line_withdraw(int mode, struct prefix *prefix, int count, + BGPDUMP_ENTRY * entry, char *time_str) +{ + int index; + char buf[128]; - } - if (entry->attr->aggregator_addr.s_addr != -1) - printf("%s|\n",inet_ntoa(entry->attr->aggregator_addr)); - else - printf("|\n"); + for (index = 0; index < count; index++) { + if (mode == 1) { + if (entry->type == BGPDUMP_TYPE_MRTD_BGP) { + printf("BGP4MP|%ld|W|%s|%d|", entry->time, + inet_ntoa(entry->body.mrtd_message.source_ip), + entry->body.mrtd_message.source_as); + } else { + switch (entry->body.zebra_message.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + printf("BGP4MP|%ld|W|%s|%d|", entry->time, + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip. + v6_addr, buf, 128), + entry->body.zebra_message.source_as); + break; +#endif + case AFI_IP: + default: + printf("BGP4MP|%ld|W|%s|%d|", entry->time, + inet_ntoa(entry->body.zebra_message.source_ip. + v4_addr), + entry->body.zebra_message.source_as); + break; } - else - { - switch(entry->body.zebra_message.address_family) - { + } + printf("%s/%d\n", inet_ntoa(prefix[index].address.v4_addr), + prefix[index].len); + } else { + if (entry->type == BGPDUMP_TYPE_MRTD_BGP) { + printf("BGP4MP|%s|W|%s|%d|", time_str, + inet_ntoa(entry->body.mrtd_message.source_ip), + entry->body.mrtd_message.source_as); + } else { + switch (entry->body.zebra_message.address_family) { #ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6: - printf("BGP4MP|%s|A|%s|%d|",time_str,inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip,buf,128),entry->body.zebra_message.source_as); - break; + case AFI_IP6: + printf("BGP4MP|%s|W|%s|%d|", time_str, + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip. + v6_addr, buf, 128), + entry->body.zebra_message.source_as); + break; #endif - case AFI_IP: - default: - printf("BGP4MP|%s|A|%s|%d|",time_str,inet_ntoa(entry->body.zebra_message.source_ip.v4_addr),entry->body.zebra_message.source_as); - break; - } - printf("%s/%d|%s|%s\n",inet_ntoa(prefix->nlri[index].address.v4_addr),prefix->nlri[index].len,entry->attr->aspath->str,tmp1); - + case AFI_IP: + default: + printf("BGP4MP|%s|W|%s|%d|", time_str, + inet_ntoa(entry->body.zebra_message.source_ip. + v4_addr), + entry->body.zebra_message.source_as); + break; } + } + printf("%s/%d\n", inet_ntoa(prefix[index].address.v4_addr), + prefix[index].len); } + } } #ifdef BGPDUMP_HAVE_IPV6 -void table_line_announce6(int mode,struct mp_nlri *prefix,int count,BGPDUMP_ENTRY *entry,char *time_str) -{ - int index ; - char buf[128]; - char buf1[128]; - char buf2[128]; - char tmp1[20]; - char tmp2[20]; - int npref; - int nmed; - - switch (entry->attr->origin) - { - case 0 : - sprintf(tmp1,"IGP"); +void +table_line_withdraw6(int mode, struct prefix *prefix, int count, + BGPDUMP_ENTRY * entry, char *time_str) +{ + int index; + char buf[128]; + char buf1[128]; + + for (index = 0; index < count; index++) { + if (mode == 1) { + switch (entry->body.zebra_message.address_family) { + case AFI_IP6: + printf("BGP4MP|%ld|W|%s|%d|%s/%d\n", entry->time, + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip, + buf1, 128), + entry->body.zebra_message.source_as, + inet_ntop(AF_INET6, &prefix[index].address.v6_addr, + buf, 128), prefix[index].len); break; - case 1: - sprintf(tmp1,"EGP"); + case AFI_IP: + default: + printf("BGP4MP|%ld|W|%s|%d|%s/%d\n", entry->time, + inet_ntop(AF_INET, + &entry->body.zebra_message.source_ip, + buf1, 128), + entry->body.zebra_message.source_as, + inet_ntop(AF_INET6, &prefix[index].address.v6_addr, + buf, 128), prefix[index].len); break; - case 2: - default: - sprintf(tmp1,"INCOMPLETE"); + } + } else { + switch (entry->body.zebra_message.address_family) { + case AFI_IP6: + printf("BGP4MP|%s|W|%s|%d|%s/%d\n", time_str, + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip, + buf1, 128), + entry->body.zebra_message.source_as, + inet_ntop(AF_INET6, &prefix[index].address.v6_addr, + buf, 128), prefix[index].len); break; + case AFI_IP: + default: + printf("BGP4MP|%s|W|%s|%d|%s/%d\n", time_str, + inet_ntop(AF_INET, + &entry->body.zebra_message.source_ip, + buf1, 128), + entry->body.zebra_message.source_as, + inet_ntop(AF_INET6, &prefix[index].address.v6_addr, + buf, 128), prefix[index].len); + break; + } } - if (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE)) - sprintf(tmp2,"AG"); - else - sprintf(tmp2,"NAG"); - - for (index=0;indexbody.zebra_message.address_family) - { - case AFI_IP6: - - npref=entry->attr->local_pref; - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF) ) ==0) - npref=0; - nmed=entry->attr->med; - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC) ) ==0) - nmed=0; - - printf("BGP4MP|%ld|A|%s|%d|%s/%d|%s|%s|%s|%d|%d|",entry->time,inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip,buf1,128),entry->body.zebra_message.source_as,inet_ntop(AF_INET6,&prefix->nlri[index].address.v6_addr,buf2,128),prefix->nlri[index].len,entry->attr->aspath->str,tmp1,inet_ntop(AF_INET6,&prefix->nexthop,buf,128),npref,nmed); - break; - case AFI_IP: - default: - npref=entry->attr->local_pref; - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF) ) ==0) - npref=0; - nmed=entry->attr->med; - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC) ) ==0) - nmed=0; - - //printf("%s|%d|%d|",inet_ntoa(entry->attr->nexthop),nprof,nmed); - printf("BGP4MP|%ld|A|%s|%d|%s/%d|%s|%s|%s|%d|%d|",entry->time,inet_ntop(AF_INET,&entry->body.zebra_message.source_ip,buf1,128),entry->body.zebra_message.source_as,inet_ntop(AF_INET6,&prefix->nlri[index].address.v6_addr,buf2,128),prefix->nlri[index].len,entry->attr->aspath->str,tmp1,inet_ntop(AF_INET6,&prefix->nexthop,buf,128),npref,nmed); - break; - } - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES) ) !=0) - printf("%s|%s|",entry->attr->community->str+1,tmp2); - else - printf("|%s|",tmp2); + } +} +#endif +void +table_line_announce(int mode, struct prefix *prefix, int count, + BGPDUMP_ENTRY * entry, char *time_str) +{ + int index; + char buf[128]; + // char buf1[128]; + // char buf2[128]; + char tmp1[20]; + char tmp2[20]; + int npref; + int nmed; + + switch (entry->attr->origin) { + + case 0: + sprintf(tmp1, "IGP"); + break; + case 1: + sprintf(tmp1, "EGP"); + break; + case 2: + default: + sprintf(tmp1, "INCOMPLETE"); + break; + } + if (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE)) + sprintf(tmp2, "AG"); + else + sprintf(tmp2, "NAG"); + + for (index = 0; index < count; index++) { + if (mode == 1) { + if (entry->type == BGPDUMP_TYPE_MRTD_BGP) { + printf("BGP4MP|%ld|A|%s|%d|", entry->time, + inet_ntoa(entry->body.mrtd_message.source_ip), + entry->body.mrtd_message.source_as); + } else { + switch (entry->body.zebra_message.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + printf("BGP4MP|%ld|A|%s|%d|", entry->time, + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip, + buf, 128), + entry->body.zebra_message.source_as); + break; +#endif + case AFI_IP: + default: + printf("BGP4MP|%ld|A|%s|%d|", entry->time, + inet_ntoa(entry->body.zebra_message.source_ip. + v4_addr), + entry->body.zebra_message.source_as); + break; + } + } + printf("%s/%d|%s|%s|", + inet_ntoa(prefix[index].address.v4_addr), + prefix[index].len, entry->attr->aspath->str, tmp1); + npref = entry->attr->local_pref; + if ((entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF)) == + 0) + npref = 0; + nmed = entry->attr->med; + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC)) == 0) + nmed = 0; + + printf("%s|%d|%d|", inet_ntoa(entry->attr->nexthop), npref, + nmed); + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES)) != 0) + printf("%s|%s|", entry->attr->community->str + 1, tmp2); + else + printf("|%s|", tmp2); + + if (entry->attr->aggregator_addr.s_addr != -1) + printf("%s|\n", inet_ntoa(entry->attr->aggregator_addr)); + else + printf("|\n"); + } else { + if (entry->type == BGPDUMP_TYPE_MRTD_BGP) { + printf("BGP4MP|%s|A|%s|%d|", time_str, + inet_ntoa(entry->body.mrtd_message.source_ip), + entry->body.mrtd_message.source_as); + } else { + switch (entry->body.zebra_message.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + printf("BGP4MP|%s|A|%s|%d|", time_str, + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip, + buf, 128), + entry->body.zebra_message.source_as); + break; +#endif + case AFI_IP: + default: + printf("BGP4MP|%s|A|%s|%d|", time_str, + inet_ntoa(entry->body.zebra_message.source_ip. + v4_addr), + entry->body.zebra_message.source_as); + break; + } + } + printf("%s/%d|%s|%s\n", + inet_ntoa(prefix[index].address.v4_addr), + prefix[index].len, entry->attr->aspath->str, tmp1); + } + } +} - if (entry->attr->aggregator_addr.s_addr != -1) - printf("%s|\n",inet_ntoa(entry->attr->aggregator_addr)); - else - printf("|\n"); +void +table_line_announce_1(int mode, struct mp_nlri *prefix, int count, + BGPDUMP_ENTRY * entry, char *time_str) +{ + int index; + char buf[128]; + // char buf1[128]; + // char buf2[128]; + char tmp1[20]; + char tmp2[20]; + int npref; + int nmed; + + switch (entry->attr->origin) { + + case 0: + sprintf(tmp1, "IGP"); + break; + case 1: + sprintf(tmp1, "EGP"); + break; + case 2: + default: + sprintf(tmp1, "INCOMPLETE"); + break; + } + if (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE)) + sprintf(tmp2, "AG"); + else + sprintf(tmp2, "NAG"); + + for (index = 0; index < count; index++) { + if (mode == 1) { + if (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MP_REACH_NLRI)) { + switch (entry->body.zebra_message.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + printf("BGP4MP|%ld|A|%s|%d|", entry->time, + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip, + buf, 128), + entry->body.zebra_message.source_as); + break; +#endif + case AFI_IP: + default: + printf("BGP4MP|%ld|A|%s|%d|", entry->time, + inet_ntoa(entry->body.zebra_message.source_ip. + v4_addr), + entry->body.zebra_message.source_as); + break; + } + printf("%s/%d|%s|%s|", + inet_ntoa(prefix->nlri[index].address.v4_addr), + prefix->nlri[index].len, entry->attr->aspath->str, + tmp1); + + npref = entry->attr->local_pref; + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF)) == 0) + npref = 0; + nmed = entry->attr->med; + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC)) == 0) + nmed = 0; + + printf("%s|%d|%d|", inet_ntoa(entry->attr->nexthop), npref, + nmed); + // printf("%s|%d|%d|",inet_ntoa(prefix->nexthop.v4_addr),entry->attr->local_pref,entry->attr->med); + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES)) != 0) + printf("%s|%s|", entry->attr->community->str + 1, + tmp2); + else + printf("|%s|", tmp2); + } else { + switch (entry->body.zebra_message.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + printf("BGP4MP|%ld|A|%s|%d|", entry->time, + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip, + buf, 128), + entry->body.zebra_message.source_as); + break; +#endif + case AFI_IP: + default: + printf("BGP4MP|%ld|A|%s|%d|", entry->time, + inet_ntoa(entry->body.zebra_message.source_ip. + v4_addr), + entry->body.zebra_message.source_as); + break; } + printf("%s/%d|%s|%s|", + inet_ntoa(prefix->nlri[index].address.v4_addr), + prefix->nlri[index].len, entry->attr->aspath->str, + tmp1); + + npref = entry->attr->local_pref; + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF)) == 0) + npref = 0; + nmed = entry->attr->med; + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC)) == 0) + nmed = 0; + + printf("%s|%d|%d|", inet_ntoa(entry->attr->nexthop), npref, + nmed); + // printf("%s|%d|%d|",inet_ntoa(entry->attr->nexthop),entry->attr->local_pref,entry->attr->med); + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES)) != 0) + printf("%s|%s|", entry->attr->community->str + 1, + tmp2); else - { - switch(entry->body.zebra_message.address_family) - { - case AFI_IP6: - printf("BGP4MP|%s|A|%s|%d|%s/%d|%s|%s\n",time_str,inet_ntop(AF_INET6,&entry->body.zebra_message.source_ip,buf1,128),entry->body.zebra_message.source_as,inet_ntop(AF_INET6,&prefix->nlri[index].address.v6_addr,buf,128),prefix->nlri[index].len,entry->attr->aspath->str,tmp1); - break; - case AFI_IP: - default: - printf("BGP4MP|%s|A|%s|%d|%s/%d|%s|%s\n",time_str,inet_ntop(AF_INET,&entry->body.zebra_message.source_ip,buf1,128),entry->body.zebra_message.source_as,inet_ntop(AF_INET6,&prefix->nlri[index].address.v6_addr,buf,128),prefix->nlri[index].len,entry->attr->aspath->str,tmp1); - break; - } - } + printf("|%s|", tmp2); - } -} + } + if (entry->attr->aggregator_addr.s_addr != -1) + printf("%s|\n", inet_ntoa(entry->attr->aggregator_addr)); + else + printf("|\n"); + } else { + switch (entry->body.zebra_message.address_family) { +#ifdef BGPDUMP_HAVE_IPV6 + case AFI_IP6: + printf("BGP4MP|%s|A|%s|%d|", time_str, + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip, buf, + 128), + entry->body.zebra_message.source_as); + break; #endif + case AFI_IP: + default: + printf("BGP4MP|%s|A|%s|%d|", time_str, + inet_ntoa(entry->body.zebra_message.source_ip. + v4_addr), + entry->body.zebra_message.source_as); + break; + } + printf("%s/%d|%s|%s\n", + inet_ntoa(prefix->nlri[index].address.v4_addr), + prefix->nlri[index].len, entry->attr->aspath->str, + tmp1); + } + } +} - -void table_line_mrtd_route(int mode,BGPDUMP_MRTD_TABLE_DUMP *route,BGPDUMP_ENTRY *entry,int timetype) +#ifdef BGPDUMP_HAVE_IPV6 +void +table_line_announce6(int mode, struct mp_nlri *prefix, int count, + BGPDUMP_ENTRY * entry, char *time_str) { - - struct tm *time; - char tmp1[20]; - char tmp2[20]; - int npref; - int nmed; - char time_str[10]; - char peer[BGPDUMP_ADDRSTRLEN]; - char prefix[BGPDUMP_ADDRSTRLEN + 4]; - char nexthop[BGPDUMP_ADDRSTRLEN]; - switch (entry->attr->origin) - { - - case 0 : - sprintf(tmp1,"IGP"); + int index; + char buf[128]; + char buf1[128]; + char buf2[128]; + char tmp1[20]; + char tmp2[20]; + int npref; + int nmed; + + switch (entry->attr->origin) { + + case 0: + sprintf(tmp1, "IGP"); + break; + case 1: + sprintf(tmp1, "EGP"); + break; + case 2: + default: + sprintf(tmp1, "INCOMPLETE"); + break; + } + if (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE)) + sprintf(tmp2, "AG"); + else + sprintf(tmp2, "NAG"); + + for (index = 0; index < count; index++) { + if (mode == 1) { + switch (entry->body.zebra_message.address_family) { + case AFI_IP6: + + npref = entry->attr->local_pref; + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF)) == 0) + npref = 0; + nmed = entry->attr->med; + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC)) == 0) + nmed = 0; + + printf("BGP4MP|%ld|A|%s|%d|%s/%d|%s|%s|%s|%d|%d|", + entry->time, inet_ntop(AF_INET6, + &entry->body.zebra_message. + source_ip, buf1, 128), + entry->body.zebra_message.source_as, + inet_ntop(AF_INET6, + &prefix->nlri[index].address.v6_addr, + buf2, 128), prefix->nlri[index].len, + entry->attr->aspath->str, tmp1, inet_ntop(AF_INET6, + &prefix-> + nexthop, + buf, 128), + npref, nmed); break; - case 1: - sprintf(tmp1,"EGP"); + case AFI_IP: + default: + npref = entry->attr->local_pref; + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF)) == 0) + npref = 0; + nmed = entry->attr->med; + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC)) == 0) + nmed = 0; + + // printf("%s|%d|%d|",inet_ntoa(entry->attr->nexthop),nprof,nmed); + printf("BGP4MP|%ld|A|%s|%d|%s/%d|%s|%s|%s|%d|%d|", + entry->time, inet_ntop(AF_INET, + &entry->body.zebra_message. + source_ip, buf1, 128), + entry->body.zebra_message.source_as, + inet_ntop(AF_INET6, + &prefix->nlri[index].address.v6_addr, + buf2, 128), prefix->nlri[index].len, + entry->attr->aspath->str, tmp1, inet_ntop(AF_INET6, + &prefix-> + nexthop, + buf, 128), + npref, nmed); break; - case 2: - default: - sprintf(tmp1,"INCOMPLETE"); + } + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES)) != 0) + printf("%s|%s|", entry->attr->community->str + 1, tmp2); + else + printf("|%s|", tmp2); + + + if (entry->attr->aggregator_addr.s_addr != -1) + printf("%s|\n", inet_ntoa(entry->attr->aggregator_addr)); + else + printf("|\n"); + + } else { + switch (entry->body.zebra_message.address_family) { + case AFI_IP6: + printf("BGP4MP|%s|A|%s|%d|%s/%d|%s|%s\n", time_str, + inet_ntop(AF_INET6, + &entry->body.zebra_message.source_ip, + buf1, 128), + entry->body.zebra_message.source_as, + inet_ntop(AF_INET6, + &prefix->nlri[index].address.v6_addr, buf, + 128), prefix->nlri[index].len, + entry->attr->aspath->str, tmp1); break; + case AFI_IP: + default: + printf("BGP4MP|%s|A|%s|%d|%s/%d|%s|%s\n", time_str, + inet_ntop(AF_INET, + &entry->body.zebra_message.source_ip, + buf1, 128), + entry->body.zebra_message.source_as, + inet_ntop(AF_INET6, + &prefix->nlri[index].address.v6_addr, buf, + 128), prefix->nlri[index].len, + entry->attr->aspath->str, tmp1); + break; + } } - if (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE)) - sprintf(tmp2,"AG"); - else - sprintf(tmp2,"NAG"); - - switch(entry->subtype){ -#ifdef BGPDUMP_HAVE_IPV6 - case AFI_IP6 : - inet_ntop(AF_INET6, &route->peer_ip.v6_addr, peer, sizeof(peer)); - inet_ntop(AF_INET6, &route->prefix.v6_addr, prefix, sizeof(prefix)); - inet_ntop(AF_INET6, &entry->attr->mp_info->announce[AFI_IP6][SAFI_UNICAST]->nexthop.v6_addr, - nexthop, sizeof(nexthop)); - break; + } +} #endif - case AFI_IP: - sprintf(peer, "%s", inet_ntoa(route->peer_ip.v4_addr)); - sprintf(prefix, "%s", inet_ntoa(route->prefix.v4_addr)); - sprintf(nexthop, "%s", inet_ntoa(entry->attr->nexthop)); - break; - default: - *peer = *prefix = *nexthop = '\0'; + +void +table_line_mrtd_route(int mode, BGPDUMP_MRTD_TABLE_DUMP * route, + BGPDUMP_ENTRY * entry, int timetype) +{ + struct tm *time; + char tmp1[20]; + char tmp2[20]; + int npref; + int nmed; + char time_str[10]; + switch (entry->attr->origin) { + + case 0: + sprintf(tmp1, "IGP"); + break; + case 1: + sprintf(tmp1, "EGP"); + break; + case 2: + default: + sprintf(tmp1, "INCOMPLETE"); + break; + } + if (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_ATOMIC_AGGREGATE)) + sprintf(tmp2, "AG"); + else + sprintf(tmp2, "NAG"); + + if (mode == 1) { + if (timetype == 0) { + printf("TABLE_DUMP|%ld|B|%s|%d|", entry->time, + inet_ntoa(route->peer_ip.v4_addr), route->peer_as); + } else if (timetype == 1) { + printf("TABLE_DUMP|%ld|B|%s|%d|", route->uptime, + inet_ntoa(route->peer_ip.v4_addr), route->peer_as); } - if (mode == 1) - { - if(timetype==0){ - printf("TABLE_DUMP|%ld|B|%s|%d|",entry->time,peer,route->peer_as); - }else if(timetype==1){ - printf("TABLE_DUMP|%ld|B|%s|%d|",route->uptime,peer,route->peer_as); - } - printf("%s/%d|%s|%s|",prefix,route->mask,entry->attr->aspath->str,tmp1); - - npref=entry->attr->local_pref; - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF) ) ==0) - npref=0; - nmed=entry->attr->med; - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC) ) ==0) - nmed=0; - - printf("%s|%d|%d|",nexthop,npref,nmed); - if( (entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES) ) !=0) - printf("%s|%s|",entry->attr->community->str+1,tmp2); - else - printf("|%s|",tmp2); - - if (entry->attr->aggregator_addr.s_addr != -1) - printf("%s|\n",inet_ntoa(entry->attr->aggregator_addr)); - else - printf("|\n"); - } - else - { - if(timetype==0){ - time=gmtime(&entry->time); - }else if(timetype==1){ - time=gmtime(&route->uptime); - } - time2str(time,time_str); - printf("TABLE_DUMP|%s|A|%s|%d|",time_str,peer,route->peer_as); - printf("%s/%d|%s|%s\n",prefix,route->mask,entry->attr->aspath->str,tmp1); - - } + printf("%s/%d|%s|%s|", inet_ntoa(route->prefix.v4_addr), + route->mask, entry->attr->aspath->str, tmp1); + + npref = entry->attr->local_pref; + if ((entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_LOCAL_PREF)) == 0) + npref = 0; + nmed = entry->attr->med; + if ((entry->attr-> + flag & ATTR_FLAG_BIT(BGP_ATTR_MULTI_EXIT_DISC)) == 0) + nmed = 0; + + printf("%s|%d|%d|", inet_ntoa(entry->attr->nexthop), npref, nmed); + if ((entry->attr->flag & ATTR_FLAG_BIT(BGP_ATTR_COMMUNITIES)) != 0) + printf("%s|%s|", entry->attr->community->str + 1, tmp2); + else + printf("|%s|", tmp2); + if (entry->attr->aggregator_addr.s_addr != -1) + printf("%s|\n", inet_ntoa(entry->attr->aggregator_addr)); + else + printf("|\n"); + } else { + if (timetype == 0) { + time = gmtime(&entry->time); + } else { + time = gmtime(&route->uptime); + } + time2str(time, time_str); + printf("TABLE_DUMP|%s|A|%s|%d|", time_str, + inet_ntoa(route->peer_ip.v4_addr), route->peer_as); + printf("%s/%d|%s|%s\n", inet_ntoa(route->prefix.v4_addr), + route->mask, entry->attr->aspath->str, tmp1); + } } diff -r -U 3 libbgpdump-1.4/bgpdump.h libbgpdump-new/bgpdump.h --- libbgpdump-1.4/bgpdump.h 2004-07-29 15:48:19.000000000 +0200 +++ libbgpdump-new/bgpdump.h 2005-01-14 22:30:09.000000000 +0100 @@ -1,4 +1,4 @@ -/* $Id: bgpdump.h,v 1.1.1.1 2004/07/29 13:48:19 james Exp $ */ +/* $Id: bgpdump.h,v 1.1.1.1 2005/01/14 21:30:09 ljb Exp $ */ /* Copyright (c) 2002 RIPE NCC diff -r -U 3 libbgpdump-1.4/bgpdump_attr.h libbgpdump-new/bgpdump_attr.h --- libbgpdump-1.4/bgpdump_attr.h 2004-07-29 15:48:19.000000000 +0200 +++ libbgpdump-new/bgpdump_attr.h 2005-01-22 07:32:34.000000000 +0100 @@ -1,4 +1,4 @@ -/* $Id: bgpdump_attr.h,v 1.1.1.1 2004/07/29 13:48:19 james Exp $ */ +/* $Id: bgpdump_attr.h,v 1.2 2005/01/22 06:32:34 ljb Exp $ */ /* Copyright (c) 2002 RIPE NCC @@ -159,9 +159,12 @@ u_int16_t len; caddr_t data; + /* flag to indicated truncated attr field */ + u_char trunc; + u_int16_t trunc_len; /* length of truncated attr field */ + u_int16_t unknown_num; struct unknown_attr *unknown; - }; struct community diff -r -U 3 libbgpdump-1.4/bgpdump_formats.h libbgpdump-new/bgpdump_formats.h --- libbgpdump-1.4/bgpdump_formats.h 2004-07-29 15:48:19.000000000 +0200 +++ libbgpdump-new/bgpdump_formats.h 2005-05-24 22:49:14.000000000 +0200 @@ -1,4 +1,4 @@ -/* $Id: bgpdump_formats.h,v 1.1.1.1 2004/07/29 13:48:19 james Exp $ */ +/* $Id: bgpdump_formats.h,v 1.5 2005/05/24 20:49:14 ljb Exp $ */ /* Copyright (c) 2002 RIPE NCC @@ -63,14 +63,13 @@ /* type and subtypes values */ #define BGPDUMP_TYPE_MRTD_BGP 5 #define BGPDUMP_SUBTYPE_MRTD_BGP_NULL 0 -#define BGPDUMP_SUBTYPE_MRTD_BGP_PREFUPDATE 1 -#define BGPDUMP_SUBTYPE_MRTD_BGP_UPDATE 2 +#define BGPDUMP_SUBTYPE_MRTD_BGP_UPDATE 1 +#define BGPDUMP_SUBTYPE_MRTD_BGP_PREF_UPDATE 2 #define BGPDUMP_SUBTYPE_MRTD_BGP_STATE_CHANGE 3 #define BGPDUMP_SUBTYPE_MRTD_BGP_SYNC 4 -#define BGPDUMP_SUBTYPE_MRTD_BGP_OPEN 129 -#define BGPDUMP_SUBTYPE_MRTD_BGP_NOTIFICATION 131 -#define BGPDUMP_SUBTYPE_MRTD_BGP_KEEPALIVE 132 -#define BGPDUMP_SUBTYPE_MRTD_BGP_ROUT_REFRESH 133 +#define BGPDUMP_SUBTYPE_MRTD_BGP_OPEN 5 +#define BGPDUMP_SUBTYPE_MRTD_BGP_NOTIFY 6 +#define BGPDUMP_SUBTYPE_MRTD_BGP_KEEPALIVE 7 #define BGPDUMP_TYPE_MRTD_TABLE_DUMP 12 #define BGPDUMP_SUBTYPE_MRTD_TABLE_DUMP_AFI_IP 1 @@ -109,9 +108,35 @@ struct in_addr source_ip; u_int16_t destination_as; struct in_addr destination_ip; - u_char *bgp_message; + + /* For OPEN packets */ + u_char version; + u_int16_t my_as; + u_int16_t hold_time; + struct in_addr bgp_id; + u_char opt_len; + u_char *opt_data; + + /* For UPDATE packets */ + u_int16_t withdraw_count; + u_int16_t announce_count; + struct prefix *withdraw; + struct prefix *announce; + + /* For NOTIFY packets */ + u_char error_code; + u_char sub_error_code; + u_int16_t notify_len; + u_char *notify_data; } BGPDUMP_MRTD_MESSAGE; +typedef struct struct_BGPDUMP_MRTD_STATE_CHANGE { + u_int16_t source_as; + struct in_addr source_ip; + u_int16_t old_state; + u_int16_t new_state; +} BGPDUMP_MRTD_STATE_CHANGE; + typedef struct struct_BGPDUMP_MRTD_TABLE_DUMP { u_int16_t view; u_int16_t sequence; @@ -170,8 +195,10 @@ struct prefix *withdraw; struct prefix *announce; - /* For corrupt update dumps */ - u_int16_t cut_bytes; + /* For corrupt update dumps -- Zebra truncation issue */ + u_int16_t cut_bytes; + u_char announce_trunc; /* flag -- announcments truncated */ + u_char withdraw_trunc; /* flag -- withdraws truncated */ struct zebra_incomplete incomplete; /* For NOTIFY packets */ @@ -206,6 +233,7 @@ typedef union union_BGPDUMP_BODY { BGPDUMP_MRTD_MESSAGE mrtd_message; BGPDUMP_MRTD_TABLE_DUMP mrtd_table_dump; + BGPDUMP_MRTD_STATE_CHANGE mrtd_state_change; BGPDUMP_ZEBRA_STATE_CHANGE zebra_state_change; BGPDUMP_ZEBRA_MESSAGE zebra_message; BGPDUMP_ZEBRA_ENTRY zebra_entry; diff -r -U 3 libbgpdump-1.4/bgpdump_lib.c libbgpdump-new/bgpdump_lib.c --- libbgpdump-1.4/bgpdump_lib.c 2004-07-29 15:48:19.000000000 +0200 +++ libbgpdump-new/bgpdump_lib.c 2005-05-24 22:49:14.000000000 +0200 @@ -1,4 +1,4 @@ -static char RCSID[] = "$Id: bgpdump_lib.c,v 1.1.1.1 2004/07/29 13:48:19 james Exp $"; +static char RCSID[] = "$Id: bgpdump_lib.c,v 1.8 2005/05/24 20:49:14 ljb Exp $"; /* Copyright (c) 2002 RIPE NCC @@ -33,11 +33,10 @@ */ - /* ------------------------------------------------------------------------------- Module Header -Filename : bgdump_lib.c +Filename : bgpdump_lib.c Author : Dan Ardelean (dan at ripe.net) Date : 02-SEP-2002 Revision : @@ -92,6 +91,10 @@ #endif BGPDUMP *bgpdump_open_dump(char *filename) { + return new_bgpdump_open_dump(filename, BGPDUMP_ALL_FLAGS); +} + +BGPDUMP *new_bgpdump_open_dump(char *filename, int option_flags) { BGPDUMP *this_dump=NULL; gzFile *f; @@ -115,6 +118,7 @@ this_dump->eof=0; this_dump->parsed = 0; this_dump->parsed_ok = 0; + this_dump->option_flags = option_flags; return this_dump; } @@ -124,7 +128,7 @@ gzclose(dump->f); } -BGPDUMP_ENTRY* bgpdump_read_next(BGPDUMP *dump) { +BGPDUMP_ENTRY* bgpdump_read_next(BGPDUMP *dump) { BGPDUMP_ENTRY *this_entry=NULL; struct mstream s; u_char *buffer; @@ -157,6 +161,11 @@ this_entry->time=ntohl(this_entry->time); this_entry->length=ntohl(this_entry->length); + if (this_entry->length > BGPDUMP_MAX_MRT_LEN) { + syslog(LOG_ERR, "bgpdump_read_next: dump record too long (%d bytes), offset %lx, timestamp: %lx", this_entry->length, gztell(dump->f), this_entry->time); free(this_entry); + return(NULL); + } + this_entry->attr=NULL; buffer = malloc(this_entry->length); @@ -170,13 +179,13 @@ dump->eof=1; return(NULL); } - ok=0; - mstream_init(&s,buffer,this_entry->length); + mstream_init(&s,buffer,this_entry->length,dump); switch(this_entry->type) { case BGPDUMP_TYPE_MRTD_BGP: + ok = process_mrtd_bgp(&s,this_entry); break; case BGPDUMP_TYPE_MRTD_TABLE_DUMP: ok = process_mrtd_table_dump(&s,this_entry); @@ -202,14 +211,17 @@ for(afi = 1; afi < BGPDUMP_MAX_AFI; afi++) { for(safi = 1; safi < BGPDUMP_MAX_SAFI; safi++) { - if(info->announce[afi][safi]) + if(info->announce[afi][safi]) { + free(info->announce[afi][safi]->nlri); free(info->announce[afi][safi]); - if(info->withdraw[afi][safi]) + } + if(info->withdraw[afi][safi]) { + free(info->withdraw[afi][safi]->nlri); free(info->withdraw[afi][safi]); + } } } - - free(info); + free(info); } void bgpdump_free_mem(BGPDUMP_ENTRY *entry) { @@ -256,6 +268,24 @@ switch(entry->type) { case BGPDUMP_TYPE_MRTD_TABLE_DUMP: break; + case BGPDUMP_TYPE_MRTD_BGP: + switch(entry->subtype) { + case BGPDUMP_SUBTYPE_MRTD_BGP_UPDATE: + if(entry->body.mrtd_message.withdraw != NULL) + free(entry->body.mrtd_message.withdraw); + if(entry->body.mrtd_message.announce != NULL) + free(entry->body.mrtd_message.announce); + break; + case BGPDUMP_SUBTYPE_MRTD_BGP_OPEN: + if(entry->body.mrtd_message.opt_data) + free(entry->body.mrtd_message.opt_data); + break; + case BGPDUMP_SUBTYPE_MRTD_BGP_NOTIFY: + if(entry->body.mrtd_message.notify_data) + free(entry->body.mrtd_message.notify_data); + break; + } + break; case BGPDUMP_TYPE_ZEBRA_BGP: switch(entry->subtype) { case BGPDUMP_SUBTYPE_ZEBRA_BGP_MESSAGE: @@ -284,19 +314,163 @@ } } +int process_mrtd_header(struct mstream *s, BGPDUMP_ENTRY *entry) { + + if (MSTREAM_CAN_READ(s) < 12 ) { /* check for space for MRTD header */ + syslog(LOG_ERR, "process_mrtd_header: MRTd message length (%d bytes) too short for header", MSTREAM_CAN_READ(s)); + return 0; + } + + /* read in MRT header fields */ + MSTREAM_GETW(s,&entry->body.mrtd_message.source_as); + MSTREAM_GET_IPV4(s,&entry->body.mrtd_message.source_ip); + MSTREAM_GETW(s,&entry->body.mrtd_message.destination_as); + MSTREAM_GET_IPV4(s,&entry->body.mrtd_message.destination_ip); + return 1; +} + +int process_mrtd_bgp_state_change(struct mstream *s, BGPDUMP_ENTRY *entry) { + + if (MSTREAM_CAN_READ(s) < 10 ) { /* check for space for MRTD header */ + syslog(LOG_ERR, "process_mrtd_bgp_state_change: message length (%d bytes) too short", MSTREAM_CAN_READ(s)); + return 0; + } + MSTREAM_GETW(s,&entry->body.mrtd_state_change.source_as); + MSTREAM_GET_IPV4(s,&entry->body.mrtd_state_change.source_ip); + MSTREAM_GETW(s,&entry->body.mrtd_state_change.old_state); + MSTREAM_GETW(s,&entry->body.mrtd_state_change.new_state); + return 1; +} + +int process_mrtd_bgp_open(struct mstream *s, BGPDUMP_ENTRY *entry) { + + if (!process_mrtd_header(s, entry)) + return 0; + MSTREAM_GETC(s, &entry->body.mrtd_message.version); + MSTREAM_GETW(s, &entry->body.mrtd_message.my_as); + MSTREAM_GETW(s, &entry->body.mrtd_message.hold_time); + MSTREAM_GET_IPV4(s, &entry->body.mrtd_message.bgp_id.s_addr); + MSTREAM_GETC(s, &entry->body.mrtd_message.opt_len); + + if(entry->body.mrtd_message.opt_len) { + entry->body.mrtd_message.opt_data = malloc(entry->body.mrtd_message.opt_len); + mstream_get(s, entry->body.mrtd_message.opt_data, entry->body.mrtd_message.opt_len); + } else + entry->body.mrtd_message.opt_data = NULL; + return 1; +} + +int process_mrtd_bgp_notify(struct mstream *s, BGPDUMP_ENTRY *entry) { + + if (!process_mrtd_header(s, entry)) + return 0; + MSTREAM_GETC(s, &entry->body.mrtd_message.error_code); + MSTREAM_GETC(s, &entry->body.mrtd_message.sub_error_code); + /* don't bother with notify data for now */ + entry->body.mrtd_message.notify_len = 0; + entry->body.mrtd_message.notify_data = NULL; + + return 1; +} + +int process_mrtd_bgp_keepalive(struct mstream *s, BGPDUMP_ENTRY *entry) { + + return process_mrtd_header(s, entry); +} + +int process_mrtd_bgp_update(struct mstream *s, BGPDUMP_ENTRY *entry) { + u_int16_t withdraw_len; + int len; + u_char *attr_ptr; + + if (!process_mrtd_header(s, entry)) + return 0; + + /* Initialize announce and withdraw arrays: if there is a + * parse error, they will not be free()d, and we will not segfault. */ + entry->body.mrtd_message.withdraw = NULL; + entry->body.mrtd_message.announce = NULL; + entry->body.mrtd_message.announce_count = 0; + + if(MSTREAM_CAN_READ(s) < 2) { + syslog(LOG_ERR, "process_mrtd_bgp_update: MRTD BGP Update message too short -- %d", MSTREAM_CAN_READ(s)); + return 0; + } + + MSTREAM_GETW(s, &withdraw_len); + len = withdraw_len; + if (len != 0) { + if(len > MSTREAM_CAN_READ(s)) { + syslog(LOG_ERR, "process_mrtd_bgp_update: unfeasible withdraw size -- %d", len); + return 0; + } + entry->body.mrtd_message.withdraw_count = + read_prefix_list(s, len, AFI_IP, &entry->body.mrtd_message.withdraw, NULL); + } else + entry->body.mrtd_message.withdraw_count = 0; + process_attr_init(entry); + + /* Where are we? */ + attr_ptr = s->position; + process_attr_read(s, entry->attr, NULL); + + if(entry->attr->trunc) { /* truncated attributes? */ + syslog(LOG_WARNING, "process_mrtd_bgp_update: attributes truncated -- %d", entry->attr->trunc_len); + return 0; + } + + /* Sanity check in case there are malformed attributes */ + if (s->position != (attr_ptr + entry->attr->len + 2) ) { + syslog(LOG_ERR, "process_mrtd_bgp_update: attributes length sanity check failed"); + return 0; + } + + len = MSTREAM_CAN_READ(s); + if (!len) /* no announcements */ + return 1; + + entry->body.mrtd_message.announce_count = + read_prefix_list(s, len, AFI_IP, &entry->body.mrtd_message.announce, NULL); + + return 1; +} + int process_mrtd_bgp(struct mstream *s,BGPDUMP_ENTRY *entry) { - syslog(LOG_WARNING, "process_mrtd_bgp: record type not implemented"); - return 0; + + if (MSTREAM_CAN_READ(s) > 4096 ) { /* basic sanity check */ + syslog(LOG_ERR, "bgpdump_mrtd_bgp: message length (%d bytes) exceeds BGP maximum", MSTREAM_CAN_READ(s)); + return 0; + } + + switch(entry->subtype) { + case BGPDUMP_SUBTYPE_MRTD_BGP_UPDATE: + return process_mrtd_bgp_update(s,entry); + case BGPDUMP_SUBTYPE_MRTD_BGP_KEEPALIVE: + return process_mrtd_bgp_keepalive(s,entry); + case BGPDUMP_SUBTYPE_MRTD_BGP_STATE_CHANGE: + return process_mrtd_bgp_state_change(s,entry); + case BGPDUMP_SUBTYPE_MRTD_BGP_OPEN: + return process_mrtd_bgp_open(s,entry); + case BGPDUMP_SUBTYPE_MRTD_BGP_NOTIFY: + return process_mrtd_bgp_notify(s,entry); + case BGPDUMP_SUBTYPE_MRTD_BGP_NULL: + return 1; + case BGPDUMP_SUBTYPE_MRTD_BGP_SYNC: + case BGPDUMP_SUBTYPE_MRTD_BGP_PREF_UPDATE: + default: + syslog(LOG_WARNING, "process_mrtd_bgp: subtype not implemented/unknown %d", entry->subtype); + return 0; + } } int process_mrtd_table_dump(struct mstream *s,BGPDUMP_ENTRY *entry) { int afi = entry->subtype; - mstream_getw(s,&entry->body.mrtd_table_dump.view); - mstream_getw(s,&entry->body.mrtd_table_dump.sequence); + MSTREAM_GETW(s,&entry->body.mrtd_table_dump.view); + MSTREAM_GETW(s,&entry->body.mrtd_table_dump.sequence); switch(afi) { case AFI_IP: - mstream_get_ipv4(s, &entry->body.mrtd_table_dump.prefix.v4_addr.s_addr); + MSTREAM_GET_IPV4(s, &entry->body.mrtd_table_dump.prefix.v4_addr.s_addr); break; #ifdef BGPDUMP_HAVE_IPV6 case AFI_IP6: @@ -307,17 +481,17 @@ syslog(LOG_WARNING, "process_mrtd_table_dump: unknown AFI %d", afi); return 0; } - mstream_getc(s,&entry->body.mrtd_table_dump.mask); - mstream_getc(s,&entry->body.mrtd_table_dump.status); - mstream_getl(s,(u_int32_t *)&entry->body.mrtd_table_dump.uptime); - if(afi == AFI_IP) - mstream_get_ipv4(s, &entry->body.mrtd_table_dump.peer_ip.v4_addr.s_addr); + MSTREAM_GETC(s,&entry->body.mrtd_table_dump.mask); + MSTREAM_GETC(s,&entry->body.mrtd_table_dump.status); + MSTREAM_GETL(s,(u_int32_t *)&entry->body.mrtd_table_dump.uptime); + if(afi == AFI_IP) { + MSTREAM_GET_IPV4(s, &entry->body.mrtd_table_dump.peer_ip.v4_addr.s_addr); + } #ifdef BGPDUMP_HAVE_IPV6 else if(afi == AFI_IP6) mstream_get(s, &entry->body.mrtd_table_dump.peer_ip.v6_addr.s6_addr, 16); #endif - - mstream_getw(s,&entry->body.mrtd_table_dump.peer_as); + MSTREAM_GETW(s,&entry->body.mrtd_table_dump.peer_as); process_attr_init(entry); process_attr_read(s, entry->attr, NULL); @@ -341,20 +515,22 @@ } } - int -process_zebra_bgp_state_change(struct mstream *s,BGPDUMP_ENTRY *entry) { - mstream_getw(s,&entry->body.zebra_state_change.source_as); - mstream_getw(s,&entry->body.zebra_state_change.destination_as); +process_zebra_bgp_state_change(struct mstream *s, BGPDUMP_ENTRY *entry) { + MSTREAM_GETW(s,&entry->body.zebra_state_change.source_as); + MSTREAM_GETW(s,&entry->body.zebra_state_change.destination_as); /* Work around Zebra dump corruption. * N.B. I don't see this in quagga 0.96.4 any more. Is it fixed? */ if (entry->length == 8) { + z_off_t offset; + + offset = gztell( ((BGPDUMP *)(s->ptr))->f ); syslog(LOG_NOTICE, - "process_zebra_bgp_state_change: 8-byte state change (zebra bug?)"); + "process_zebra_bgp_state_change: 8-byte state change (zebra bug?)- offset: %x", (int) offset); - mstream_getw(s,&entry->body.zebra_state_change.old_state); - mstream_getw(s,&entry->body.zebra_state_change.new_state); + MSTREAM_GETW(s,&entry->body.zebra_state_change.old_state); + MSTREAM_GETW(s,&entry->body.zebra_state_change.new_state); /* Fill in with dummy values */ entry->body.zebra_state_change.interface_index = 0; @@ -365,8 +541,8 @@ return 1; } - mstream_getw(s,&entry->body.zebra_state_change.interface_index); - mstream_getw(s,&entry->body.zebra_state_change.address_family); + MSTREAM_GETW(s,&entry->body.zebra_state_change.interface_index); + MSTREAM_GETW(s,&entry->body.zebra_state_change.address_family); switch(entry->body.zebra_state_change.address_family) { case AFI_IP: @@ -376,8 +552,8 @@ return 0; } - mstream_get_ipv4(s,&entry->body.zebra_state_change.source_ip.v4_addr.s_addr); - mstream_get_ipv4(s,&entry->body.zebra_state_change.destination_ip.v4_addr.s_addr); + MSTREAM_GET_IPV4(s,&entry->body.zebra_state_change.source_ip.v4_addr.s_addr); + MSTREAM_GET_IPV4(s,&entry->body.zebra_state_change.destination_ip.v4_addr.s_addr); break; #ifdef BGPDUMP_HAVE_IPV6 case AFI_IP6: @@ -396,8 +572,8 @@ entry->body.zebra_state_change.address_family); return 0; } - mstream_getw(s,&entry->body.zebra_state_change.old_state); - mstream_getw(s,&entry->body.zebra_state_change.new_state); + MSTREAM_GETW(s,&entry->body.zebra_state_change.old_state); + MSTREAM_GETW(s,&entry->body.zebra_state_change.new_state); return 1; } @@ -405,15 +581,19 @@ int process_zebra_bgp_message(struct mstream *s,BGPDUMP_ENTRY *entry) { u_char marker[16]; /* BGP marker */ - mstream_getw(s,&entry->body.zebra_message.source_as); - mstream_getw(s,&entry->body.zebra_message.destination_as); - mstream_getw(s,&entry->body.zebra_message.interface_index); - mstream_getw(s,&entry->body.zebra_message.address_family); + MSTREAM_GETW(s,&entry->body.zebra_message.source_as); + MSTREAM_GETW(s,&entry->body.zebra_message.destination_as); + MSTREAM_GETW(s,&entry->body.zebra_message.interface_index); + MSTREAM_GETW(s,&entry->body.zebra_message.address_family); /* Initialize announce and withdraw arrays: if there is a * parse error, they will not be free()d, and we will not segfault. */ entry->body.zebra_message.withdraw = NULL; entry->body.zebra_message.announce = NULL; + entry->body.zebra_message.withdraw_count = 0; + entry->body.zebra_message.announce_count = 0; + entry->body.zebra_message.withdraw_trunc = 0; + entry->body.zebra_message.announce_trunc = 0; entry->body.zebra_message.opt_len = 0; entry->body.zebra_message.opt_data = NULL; @@ -422,23 +602,32 @@ switch(entry->body.zebra_message.address_family) { case AFI_IP: - mstream_get_ipv4(s,&entry->body.zebra_message.source_ip.v4_addr.s_addr); - mstream_get_ipv4(s,&entry->body.zebra_message.destination_ip.v4_addr.s_addr); - mstream_get (s, marker, 16); + MSTREAM_GET_IPV4(s,&entry->body.zebra_message.source_ip.v4_addr.s_addr); + MSTREAM_GET_IPV4(s,&entry->body.zebra_message.destination_ip.v4_addr.s_addr); + if ( ((BGPDUMP *)(s->ptr))->option_flags & BGPDUMP_CHECK_MARKER ) + mstream_get (s, marker, 16); + else + s->position += 16; break; #ifdef BGPDUMP_HAVE_IPV6 case AFI_IP6: mstream_get(s,&entry->body.zebra_message.source_ip.v6_addr.s6_addr, 16); mstream_get(s,&entry->body.zebra_message.destination_ip.v6_addr.s6_addr, 16); - mstream_get (s, marker, 16); + if ( ((BGPDUMP *)(s->ptr))->option_flags & BGPDUMP_CHECK_MARKER ) + mstream_get (s, marker, 16); + else + s->position += 16; break; #endif case 0xFFFF: /* Zebra doesn't dump ifindex or src/dest IPs in OPEN * messages. Work around it. */ if (entry->body.zebra_message.interface_index == 0xFFFF) { - memset(marker, 0xFF, 4); - mstream_get (s, marker + 4, 12); + if ( ((BGPDUMP *)(s->ptr))->option_flags & BGPDUMP_CHECK_MARKER ) { + memset(marker, 0xFF, 4); + mstream_get (s, marker + 4, 12); + } else + s->position += 12; entry->body.zebra_message.interface_index = 0; entry->body.zebra_message.address_family = AFI_IP; entry->body.zebra_message.source_ip.v4_addr.s_addr = 0; @@ -454,19 +643,21 @@ return 0; } - if(memcmp(marker, "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377", 16) != 0) { + if ( ((BGPDUMP *)(s->ptr))->option_flags & BGPDUMP_CHECK_MARKER ) { + if(memcmp(marker, "\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377\377", 16) != 0) { /* bad marker... ignore packet */ syslog(LOG_WARNING, - "bgp_message: bad marker: %02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x", + "process_zebra_bgp_message: bad marker: %02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x.%02x", marker[0],marker[1],marker[2],marker[3],marker[4],marker[5],marker[6],marker[7], marker[8],marker[9],marker[10],marker[11],marker[12],marker[13],marker[14],marker[15]); return 0; + } } - mstream_getw (s,&entry->body.zebra_message.size); - mstream_getc (s,&entry->body.zebra_message.type); + MSTREAM_GETW (s,&entry->body.zebra_message.size); + MSTREAM_GETC (s,&entry->body.zebra_message.type); - entry->body.zebra_message.cut_bytes = entry->body.zebra_message.size - 19 - mstream_can_read(s); + entry->body.zebra_message.cut_bytes = entry->body.zebra_message.size - 19 - MSTREAM_CAN_READ(s); switch(entry->body.zebra_message.type) { case BGP_MSG_OPEN: @@ -480,22 +671,22 @@ return 1; case BGP_MSG_ROUTE_REFRESH_01: /* Not implemented yet */ - syslog(LOG_WARNING, "bgp_message: MSG_ROUTE_REFRESH_01 not implemented yet"); + syslog(LOG_WARNING, "process_zebra_bgp_message: MSG_ROUTE_REFRESH_01 not implemented yet"); return 0; case BGP_MSG_ROUTE_REFRESH: /* Not implemented yet */ - syslog(LOG_WARNING, "bgp_message: MSG_ROUTE_REFRESH not implemented yet"); + syslog(LOG_WARNING, "process_zebra_bgp_message: MSG_ROUTE_REFRESH not implemented yet"); return 0; default: - syslog(LOG_WARNING, "bgp_message: unknown BGP message type %d", - entry->body.zebra_message.type); + syslog(LOG_WARNING, "process_zebra_bgp_message: unknown Zebra BGP message type %d, size %d, cut_bytes %d", + entry->body.zebra_message.type, entry->body.zebra_message.size, entry->body.zebra_message.cut_bytes ); return 0; } } int process_zebra_bgp_message_notify(struct mstream *s, BGPDUMP_ENTRY *entry) { - mstream_getc(s, &entry->body.zebra_message.error_code); - mstream_getc(s, &entry->body.zebra_message.sub_error_code); + MSTREAM_GETC(s, &entry->body.zebra_message.error_code); + MSTREAM_GETC(s, &entry->body.zebra_message.sub_error_code); entry->body.zebra_message.notify_len = entry->body.zebra_message.size - 21; if(entry->body.zebra_message.notify_len > 0) { @@ -507,11 +698,11 @@ } int process_zebra_bgp_message_open(struct mstream *s, BGPDUMP_ENTRY *entry) { - mstream_getc(s, &entry->body.zebra_message.version); - mstream_getw(s, &entry->body.zebra_message.my_as); - mstream_getw(s, &entry->body.zebra_message.hold_time); - mstream_get_ipv4(s, &entry->body.zebra_message.bgp_id.s_addr); - mstream_getc(s, &entry->body.zebra_message.opt_len); + MSTREAM_GETC(s, &entry->body.zebra_message.version); + MSTREAM_GETW(s, &entry->body.zebra_message.my_as); + MSTREAM_GETW(s, &entry->body.zebra_message.hold_time); + MSTREAM_GET_IPV4(s, &entry->body.zebra_message.bgp_id.s_addr); + MSTREAM_GETC(s, &entry->body.zebra_message.opt_len); if(entry->body.zebra_message.opt_len) { entry->body.zebra_message.opt_data = malloc(entry->body.zebra_message.opt_len); @@ -522,30 +713,42 @@ } int process_zebra_bgp_message_update(struct mstream *s, BGPDUMP_ENTRY *entry) { - int withdraw_len; - int announce_len; - int attr_pos; + u_int16_t withdraw_len; + int len; + u_char *attr_ptr; entry->body.zebra_message.incomplete.orig_len = 0; - withdraw_len = mstream_getw(s, NULL); - entry->body.zebra_message.withdraw_count = - read_prefix_list(s, withdraw_len, AFI_IP, &entry->body.zebra_message.withdraw, - &entry->body.zebra_message.incomplete); + MSTREAM_GETW(s, &withdraw_len); + len = withdraw_len; + if (len != 0) { + if(len > MSTREAM_CAN_READ(s)) + entry->body.zebra_message.withdraw_trunc = 1; + if(len > 4080) { + syslog(LOG_WARNING, "process_zebra_bgp_message_update: unfeasible withdraw size -- %d", len); + return 0; + } + entry->body.zebra_message.withdraw_count = + read_prefix_list(s, len, AFI_IP, &entry->body.zebra_message.withdraw, &entry->body.zebra_message.incomplete); + } + + process_attr_init(entry); /* Where are we? */ - attr_pos = s->position; + attr_ptr = s->position; - process_attr_init(entry); process_attr_read(s, entry->attr, &entry->body.zebra_message.incomplete); /* Get back in sync in case there are malformed attributes */ - s->position = attr_pos + entry->attr->len + 2; - if(s->position > s->len) s->position = s->len; - - announce_len = entry->body.zebra_message.size - 23 - withdraw_len - entry->attr->len; + s->position = attr_ptr + entry->attr->len + 2; + if(s->position >= s->end) /* truncated message, no announcements */ + return 1; + + len = entry->body.zebra_message.size - 23 - len - entry->attr->len; + if(len > MSTREAM_CAN_READ(s)) /* see if announcements have been truncated */ + entry->body.zebra_message.announce_trunc = 1; entry->body.zebra_message.announce_count = - read_prefix_list(s, announce_len, AFI_IP, &entry->body.zebra_message.announce, + read_prefix_list(s, len, AFI_IP, &entry->body.zebra_message.announce, &entry->body.zebra_message.incomplete); return 1; @@ -563,10 +766,8 @@ void process_attr_init(BGPDUMP_ENTRY *entry) { - entry->attr = malloc(sizeof(struct attr)); + entry->attr = calloc(1,sizeof(struct attr)); - entry->attr->refcnt = 0; - entry->attr->flag = 0; entry->attr->origin = -1; entry->attr->nexthop.s_addr = -1; entry->attr->med = -1; @@ -574,85 +775,90 @@ entry->attr->aggregator_as = -1; entry->attr->aggregator_addr.s_addr = -1; entry->attr->weight = -1; - entry->attr->cluster = NULL; - - entry->attr->aspath = NULL; - entry->attr->community = NULL; - entry->attr->transit = NULL; - - entry->attr->mp_info = NULL; - entry->attr->len = 0; - entry->attr->data = NULL; - - entry->attr->unknown_num = 0; - entry->attr->unknown = NULL; } void process_attr_read(struct mstream *s, struct attr *attr, struct zebra_incomplete *incomplete) { u_char flag; u_char type; - u_int32_t len, pos, end; + u_int32_t len; + u_char *end; u_int32_t truelen; struct unknown_attr *unknown; - mstream_getw(s, &attr->len); - attr->data=malloc(attr->len); + /* Check if attribute len truncated */ + if(sizeof(attr->len) > MSTREAM_CAN_READ(s)) { + attr->trunc = 1; + attr->trunc_len = 0; + return; + } + MSTREAM_GETW(s, &attr->len); /* Check the attributes are not truncated */ - if(attr->len > mstream_can_read(s)) { - truelen = mstream_can_read(s); - memset(attr->data + truelen, 0, attr->len - truelen); + if(attr->len > MSTREAM_CAN_READ(s)) { + attr->trunc = 1; + truelen = attr->trunc_len = MSTREAM_CAN_READ(s); } else { truelen = attr->len; } - memcpy(attr->data, &s->start[s->position], truelen); + if ( ((BGPDUMP *)(s->ptr))->option_flags & BGPDUMP_COPY_ATTR ) { + attr->data=malloc(truelen); + memcpy(attr->data, s->position, truelen); + } + + if (attr->trunc) /* don't bother with truncated attributes for now */ + return; /* since IPv4 announcements will be missing as well */ end = s->position + truelen; while(s->position < end) { - mstream_getc(s,&flag); - mstream_getc(s,&type); + MSTREAM_GETC(s,&flag); + MSTREAM_GETC(s,&type); - if(flag & BGP_ATTR_FLAG_EXTLEN) - len=mstream_getw(s,NULL); - else - len=mstream_getc(s,NULL); + if(flag & BGP_ATTR_FLAG_EXTLEN) { + u_int16_t ext_len; + MSTREAM_GETW(s,&ext_len); + len = ext_len; + } else { + u_char small_len; + MSTREAM_GETC(s,&small_len); + len = small_len; + } switch(type) { case BGP_ATTR_ORIGIN: attr->flag = attr->flag | ATTR_FLAG_BIT (BGP_ATTR_ORIGIN); - mstream_getc(s,&attr->origin); + MSTREAM_GETC(s,&attr->origin); break; case BGP_ATTR_AS_PATH: attr->flag = attr->flag | ATTR_FLAG_BIT (BGP_ATTR_AS_PATH); attr->aspath = malloc(sizeof(struct aspath)); - attr->aspath->refcnt = 0; + attr->aspath->count = attr->aspath->refcnt = 0; attr->aspath->length = len; - attr->aspath->count = 0; attr->aspath->data = malloc(len); mstream_get(s,attr->aspath->data,len); attr->aspath->str = NULL; - process_attr_aspath_string(attr->aspath); + if ( ((BGPDUMP *)(s->ptr))->option_flags & BGPDUMP_PROCESS_ASPATH ) + process_attr_aspath_string(attr->aspath); break; case BGP_ATTR_NEXT_HOP: attr->flag = attr->flag | ATTR_FLAG_BIT (BGP_ATTR_NEXT_HOP); - mstream_get_ipv4(s,&attr->nexthop.s_addr); + MSTREAM_GET_IPV4(s,&attr->nexthop.s_addr); break; case BGP_ATTR_MULTI_EXIT_DISC: attr->flag = attr->flag | ATTR_FLAG_BIT (BGP_ATTR_MULTI_EXIT_DISC); - mstream_getl(s,&attr->med); + MSTREAM_GETL(s,&attr->med); break; case BGP_ATTR_LOCAL_PREF: attr->flag = attr->flag | ATTR_FLAG_BIT (BGP_ATTR_LOCAL_PREF); - mstream_getl(s,&attr->local_pref); + MSTREAM_GETL(s,&attr->local_pref); break; case BGP_ATTR_ATOMIC_AGGREGATE: attr->flag = attr->flag | ATTR_FLAG_BIT (BGP_ATTR_ATOMIC_AGGREGATE); break; case BGP_ATTR_AGGREGATOR: attr->flag = attr->flag | ATTR_FLAG_BIT (BGP_ATTR_AGGREGATOR); - mstream_getw(s,&attr->aggregator_as); - mstream_get_ipv4(s,&attr->aggregator_addr.s_addr); + MSTREAM_GETW(s,&attr->aggregator_as); + MSTREAM_GET_IPV4(s,&attr->aggregator_addr.s_addr); break; case BGP_ATTR_COMMUNITIES: attr->flag = attr->flag | ATTR_FLAG_BIT (BGP_ATTR_COMMUNITIES); @@ -662,7 +868,8 @@ attr->community->val = malloc(len); mstream_get(s,attr->community->val,len); attr->community->str = NULL; - process_attr_community_string(attr->community); + if ( ((BGPDUMP *)(s->ptr))->option_flags & BGPDUMP_PROCESS_COMMUNITY ) + process_attr_community_string(attr->community); break; case BGP_ATTR_MP_REACH_NLRI: attr->flag = attr->flag | ATTR_FLAG_BIT (BGP_ATTR_MP_REACH_NLRI); @@ -924,8 +1131,8 @@ u_int8_t snpa_len; struct mp_nlri *mp_nlri; - mstream_getw(s, &afi); - mstream_getc(s, &safi); + MSTREAM_GETW(s, &afi); + MSTREAM_GETC(s, &safi); len -= 3; /* Do we know about this address family? */ @@ -951,12 +1158,12 @@ info->announce[afi][safi] = mp_nlri; /* Get next hop */ - mstream_getc(s, &mp_nlri->nexthop_len); + MSTREAM_GETC(s, &mp_nlri->nexthop_len); len--; switch(afi) { case AFI_IP: - mstream_get_ipv4(s, &mp_nlri->nexthop.v4_addr.s_addr); + MSTREAM_GET_IPV4(s, &mp_nlri->nexthop.v4_addr.s_addr); mstream_get(s, NULL, mp_nlri->nexthop_len - 4); break; #ifdef BGPDUMP_HAVE_IPV6 @@ -978,14 +1185,14 @@ len -= mp_nlri->nexthop_len; /* Skip over SNPAs */ - mstream_getc(s, &num_snpa); + MSTREAM_GETC(s, &num_snpa); len--; if(num_snpa) { syslog(LOG_WARNING, "process_mp_announce: MP_NLRI contains SNPAs, skipped"); while(num_snpa > 0) { - snpa_len = mstream_getc(s, NULL); + MSTREAM_GETC(s, &snpa_len); mstream_get(s, NULL, snpa_len); len -= snpa_len; num_snpa--; @@ -1001,8 +1208,8 @@ u_int8_t safi; struct mp_nlri *mp_nlri; - mstream_getw(s, &afi); - mstream_getc(s, &safi); + MSTREAM_GETW(s, &afi); + MSTREAM_GETC(s, &safi); len -= 3; /* Do we know about this address family? */ @@ -1044,24 +1251,33 @@ return 0; } - while(len > 0 && mstream_can_read(s) > 0) { + while(len > 0 && MSTREAM_CAN_READ(s) > 0) { /* Prefix length in bits */ - p_len = mstream_getc(s,NULL); len--; + MSTREAM_GETC(s,&p_len); len--; + if (afi == AFI_IP && p_len > 32) { + syslog(LOG_WARNING, "read_prefix_list: AFI %d - prefix length too long %d", afi, p_len); + mstream_get(s, NULL, MSTREAM_CAN_READ(s)); + break; + } else if (afi == AFI_IP6 && p_len > 128) { + syslog(LOG_WARNING, "read_prefix_list: AFI %d - prefix length too long %d", afi, p_len); + mstream_get(s, NULL, MSTREAM_CAN_READ(s)); + break; + } /* In bytes */ p_bytes = p_len / 8; if(p_len % 8 !=0) p_bytes++; /* Truncated prefix list? */ - if(mstream_can_read(s) < p_bytes) { + if(MSTREAM_CAN_READ(s) < p_bytes) { if(incomplete) { /* Put prefix in incomplete structure */ memset(&incomplete->prefix, 0, sizeof(struct prefix)); incomplete->afi = afi; incomplete->orig_len = p_len; - incomplete->prefix.len = mstream_can_read(s) * 8; - mstream_get(s, &incomplete->prefix.address, mstream_can_read(s)); + incomplete->prefix.len = MSTREAM_CAN_READ(s) * 8; + mstream_get(s, &incomplete->prefix.address, MSTREAM_CAN_READ(s)); } else { /* Just skip over it */ - mstream_get(s, NULL, mstream_can_read(s)); + mstream_get(s, NULL, MSTREAM_CAN_READ(s)); } /* In either case, don't put it in the prefix array */ break; diff -r -U 3 libbgpdump-1.4/bgpdump_lib.h libbgpdump-new/bgpdump_lib.h --- libbgpdump-1.4/bgpdump_lib.h 2004-07-29 15:48:19.000000000 +0200 +++ libbgpdump-new/bgpdump_lib.h 2005-04-28 21:34:59.000000000 +0200 @@ -1,4 +1,4 @@ -/* $Id: bgpdump_lib.h,v 1.1.1.1 2004/07/29 13:48:19 james Exp $ */ +/* $Id: bgpdump_lib.h,v 1.2 2005/04/28 19:34:59 ljb Exp $ */ /* Copyright (c) 2002 RIPE NCC @@ -64,6 +64,14 @@ #define BGPDUMP_MAX_FILE_LEN 1024 #define BGPDUMP_MAX_AS_PATH_LEN 2000 +#define BGPDUMP_MAX_MRT_LEN 5000 + +/* flags to enable different levels of processing */ +#define BGPDUMP_COPY_ATTR 0x1 /* flag to copy attribute data */ +#define BGPDUMP_PROCESS_COMMUNITY 0x2 /* flag to asciify communities */ +#define BGPDUMP_PROCESS_ASPATH 0x4 /* flag to asciify AS path */ +#define BGPDUMP_CHECK_MARKER 0x8 /* flag to check marker field in BGP messages */ +#define BGPDUMP_ALL_FLAGS 0xF /* all flags */ typedef struct struct_BGPDUMP { gzFile *f; @@ -71,11 +79,13 @@ char filename[BGPDUMP_MAX_FILE_LEN]; int parsed; int parsed_ok; + int option_flags; } BGPDUMP; /* prototypes */ BGPDUMP *bgpdump_open_dump(char *filename); +BGPDUMP *new_bgpdump_open_dump(char *filename, int option_flags); void bgpdump_close_dump(BGPDUMP *dump); BGPDUMP_ENTRY* bgpdump_read_next(BGPDUMP *dump); diff -r -U 3 libbgpdump-1.4/bgpdump_mstream.c libbgpdump-new/bgpdump_mstream.c --- libbgpdump-1.4/bgpdump_mstream.c 2004-07-29 15:48:19.000000000 +0200 +++ libbgpdump-new/bgpdump_mstream.c 2005-01-22 07:32:35.000000000 +0100 @@ -1,4 +1,4 @@ -static char RCSID[] = "$Id: bgpdump_mstream.c,v 1.1.1.1 2004/07/29 13:48:19 james Exp $"; +static char RCSID[] = "$Id: bgpdump_mstream.c,v 1.2 2005/01/22 06:32:35 ljb Exp $"; /* Copyright (c) 2002 RIPE NCC @@ -56,65 +56,66 @@ #include #include -void mstream_init(struct mstream *s, u_char *buffer, u_int32_t len) { +void mstream_init(struct mstream *s, u_char *buffer, u_int32_t len, void *ptr) { s->start=buffer; - s->position=0; - s->len=len; + s->position=buffer; + s->end=buffer + len; + s->ptr=ptr; } -u_char mstream_getc(struct mstream *s, u_char *d) { - u_char data; +void mstream_getc(struct mstream *s, u_char *d) { - mstream_get(s, &data, sizeof(data)); - if(d!=NULL) memcpy(d,&data,sizeof(data)); - return data; + if ((s->end - s->position) >= sizeof(u_char)) { + *d = *(s->position); + s->position += sizeof(u_char); + } + return; } -u_int16_t mstream_getw(struct mstream *s, u_int16_t *d) { - u_int16_t data; +void mstream_getw(struct mstream *s, u_int16_t *d) { - mstream_get(s, &data, sizeof(data)); - data=ntohs(data); - if(d!=NULL) memcpy(d,&data,sizeof(data)); - return data; + if ((s->end - s->position) >= sizeof(u_int16_t)) { + memcpy(d, s->position, sizeof(u_int16_t)); + *d = ntohs(*d); + s->position += sizeof(u_int16_t); + } + return; } -u_int32_t mstream_getl(struct mstream *s, u_int32_t *d) { - u_int32_t data; +void mstream_getl(struct mstream *s, u_int32_t *d) { - mstream_get(s, &data, sizeof(data)); - data=ntohl(data); - if(d!=NULL) memcpy(d,&data,sizeof(data)); - return data; + if ((s->end - s->position) >= sizeof(u_int32_t)) { + memcpy(d, s->position, sizeof(u_int32_t)); + *d = ntohl(*d); + s->position += sizeof(u_int32_t); + } + return; } -u_int32_t mstream_get_ipv4(struct mstream *s, u_int32_t *d) { - u_int32_t data; +void mstream_get_ipv4(struct mstream *s, u_int32_t *d) { - mstream_get(s, &data, sizeof(data)); - if(d!=NULL) memcpy(d,&data,sizeof(data)); - return data; + if ((s->end - s->position) >= sizeof(u_int32_t)) { + memcpy(d,s->position,sizeof(u_int32_t)); + s->position += sizeof(u_int32_t); + } + return; } -u_int32_t mstream_can_read(struct mstream *s) { - return s->len - s->position; -} - -u_int32_t mstream_get (struct mstream *s, void *d, u_int32_t len) { - int room = mstream_can_read(s); +void mstream_get (struct mstream *s, void *d, u_int32_t len) { + int room = MSTREAM_CAN_READ(s); if(room >= len) { - if(d) memcpy(d, s->start + s->position, len); + if(d) memcpy(d, s->position, len); s->position += len; - return len; + return; } else { /* Reading past end of buffer! Zero out extra bytes and set position to end of buffer */ if(d) { - memcpy(d, s->start + s->position, room); + memcpy(d, s->position, room); memset((char *)d + room, 0, len - room); } - s->position = s->len; - return room; + s->position = s->end; + return; } } diff -r -U 3 libbgpdump-1.4/bgpdump_mstream.h libbgpdump-new/bgpdump_mstream.h --- libbgpdump-1.4/bgpdump_mstream.h 2004-07-29 15:48:19.000000000 +0200 +++ libbgpdump-new/bgpdump_mstream.h 2005-01-22 07:32:35.000000000 +0100 @@ -1,4 +1,4 @@ -/* $Id: bgpdump_mstream.h,v 1.1.1.1 2004/07/29 13:48:19 james Exp $ */ +/* $Id: bgpdump_mstream.h,v 1.2 2005/01/22 06:32:35 ljb Exp $ */ /* Copyright (c) 2002 RIPE NCC @@ -54,19 +54,26 @@ #include #include +#include struct mstream { u_char *start; - u_int16_t position; - u_int32_t len; + u_char *position; + u_char *end; + void *ptr; }; - void mstream_init(struct mstream *s, u_char *buffer,u_int32_t len); - u_char mstream_getc(struct mstream *s, u_char *d); - u_int16_t mstream_getw(struct mstream *s, u_int16_t *d); - u_int32_t mstream_getl(struct mstream *s, u_int32_t *d); - u_int32_t mstream_get_ipv4(struct mstream *s, u_int32_t *d); - u_int32_t mstream_can_read(struct mstream *s); - u_int32_t mstream_get (struct mstream *s, void *d, u_int32_t len); + void mstream_init(struct mstream *s, u_char *buffer,u_int32_t len, void *ptr); + void mstream_getc(struct mstream *s, u_char *d); + void mstream_getw(struct mstream *s, u_int16_t *d); + void mstream_getl(struct mstream *s, u_int32_t *d); + void mstream_get_ipv4(struct mstream *s, u_int32_t *d); + void mstream_get (struct mstream *s, void *d, u_int32_t len); + +#define MSTREAM_GETC(s,d) { assert( (s)->end-(s)->position >= sizeof(u_char) ); *(d) = *((s)->position); (s)->position++; } +#define MSTREAM_GETW(s,d) { assert( (s)->end-(s)->position >= sizeof(u_int16_t)); memcpy(d, (s)->position, sizeof(u_int16_t)); *(d) = ntohs(*(d)); (s)->position+=sizeof(u_int16_t); } +#define MSTREAM_GETL(s,d) { assert( (s)->end-(s)->position >= sizeof(u_int32_t)); memcpy(d, (s)->position, sizeof(u_int32_t)); *(d) = ntohl(*(d)); (s)->position+=sizeof(u_int32_t); } +#define MSTREAM_GET_IPV4(s,d) { assert( (s)->end-(s)->position >= sizeof(u_int32_t)); memcpy(d, (s)->position, sizeof(u_int32_t)); (s)->position+=sizeof(u_int32_t); } +#define MSTREAM_CAN_READ(s) ((s)->end - (s)->position) #endif Only in libbgpdump-1.4/: bootstrap.sh Only in libbgpdump-new/: configure Only in libbgpdump-1.4/: configure.in diff -r -U 3 libbgpdump-1.4/test.c libbgpdump-new/test.c --- libbgpdump-1.4/test.c 2004-07-29 15:48:19.000000000 +0200 +++ libbgpdump-new/test.c 2005-05-20 22:30:12.000000000 +0200 @@ -1,4 +1,4 @@ -static char RCSID[] = "$Id: test.c,v 1.1.1.1 2004/07/29 13:48:19 james Exp $"; +static char RCSID[] = "$Id: test.c,v 1.2 2005/05/20 20:30:12 ljb Exp $"; /* Copyright (c) 2002 RIPE NCC From arife at ripe.net Thu Jun 9 15:52:15 2005 From: arife at ripe.net (Arife Vural) Date: Thu, 9 Jun 2005 15:52:15 +0200 Subject: NCC#2002092793 [ris-int] RIS hijacking 195.80.239.0/24, finally it's gone! In-Reply-To: <200506081403.j58E34UU023347@birch.ripe.net> References: <20050608131135.GD28740@ripe.net> <200506081403.j58E34UU023347@birch.ripe.net> Message-ID: <20050609135215.GG8572@ripe.net> Hi guys, Finally, this route is also disappeared from routing tables. I do not see on RRC00 anymore, in a couple of hours you will not see from riswhois as well. rrc00> sh ip bgp 87.255.248.0/21 % Network not in table A. -- From: Sender: To: , X-OriginalArrivalTime: 09 Jun 2005 13:42:49.0863 (UTC) FILETIME=[208C0170:01C56CF9] X-RIPE-Spam-Level: X-RIPE-Spam-Tests: BAYES_00,NO_REAL_NAME X-RIPE-Spam-Status: U 0.281868 / -2.6 X-RIPE-Signature: ead9d970294533e5fd8c601b83fdd02e Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from quoted-printable to 8bit by birch.ripe.net id j59DhKUU030139 Status: RO Content-Length: 4001 Lines: 131 Hi Arife, This one was very strange. Not sure why our router was still thinking it was seeing the prefix from Tiscali. Hard clearing the sessions solve the problem. t2a4.se-sto#sh ip bgp 87.255.248.0 % Network not in table Regards, Piyush. -----Original Message----- From: Arife Vural [mailto:arife at ripe.net] Sent: 09 June 2005 10:09 To: peering G Subject: Problem getting prefixes from RIS (AS12654) Hi there, Part of De-bogonising project we were announcing 87/8. We stopped it for a while, but it's seen in routing tables as follow, rrc00> sh ip bgp 87.255.248.0/21 BGP routing table entry for 87.255.248.0/21 Paths: (1 available, best #1, table Default-IP-Routing-Table) Not advertised to any peer 9177 6730 5400 3257 28747 12654 212.47.190.1 from 212.47.190.1 (213.193.66.42) Origin IGP, localpref 100, valid, external, best Last update: Wed Jun 8 10:20:46 2005 I checked it out with AS3257, it looks they do not see that prefix anymore, but it's still seen by AS5400. BT Global Services: Looking Glass Query: BGP Network Router: Netherlands - ixp1.nl-ams2 Address: 87.255.248.0 BGP routing table entry for 87.255.248.0/21, version 51534071 Bestpath Modifiers: deterministic-med Paths: (2 available, best #1) Multipath: eBGP Advertised to update-groups: 1 3257 28747 12654 166.49.166.184 (metric 181) from 166.49.166.32 (166.49.166.32) Origin IGP, metric 0, localpref 180, valid, internal, best Community: 3257:4000 3257:5044 5400:3001 5400:3002 Originator: 166.49.166.184, Cluster list: 166.49.166.32, 166.49.166.176 3257 28747 12654 166.49.166.184 (metric 181) from 166.49.166.33 (166.49.166.33) Origin IGP, metric 0, localpref 180, valid, internal Community: 3257:4000 3257:5044 5400:3001 5400:3002 Originator: 166.49.166.184, Cluster list: 166.49.166.33, 166.49.166.176 I was wondering whether you could reset the session with AS3257 and make sure you will not announce that route to your peers. Regards. Arife ----- Forwarded message from Alexander Koch ----- From: Alexander Koch To: Arife Vural Subject: Re: Need a favor Date: Wed, 8 Jun 2005 14:00:49 +0200 Hello Arife, what you see is probably comparable to IPv6 ghosts routes where a /35 more specific route sticked in the routing table long after it was theoretically withdrawn. We currently do not see the route from RealROOT, but then, AS28747 was changed to AS 9009 two weeks ago or so. Also seeing the AS path I believe you can safely assume AS5400 (BT's backbone) is not seeing it either... your best bet might be to contact bgp at sunrise.net and/or AS9177 directly. Does that help? Best regards, Alexander On Wed, 8 June 2005 14:00:17 +0200, Arife Vural wrote: > Hi Alexander, > > Part of De-bogonising project we were announcing 87/8. We stopped it > for a while, but it's seen in routing tables. Be honest, I could not > explain why this route was still in the routing tables even if we do > not have any entries in our config file for that prefix. > > On rrc00, it's seen like that, > > rrc00> sh ip bgp 87.255.248.0/21 > BGP routing table entry for 87.255.248.0/21 > Paths: (1 available, best #1, table Default-IP-Routing-Table) > Not advertised to any peer > 9177 6730 5400 3257 28747 12654 > 212.47.190.1 from 212.47.190.1 (213.193.66.42) > Origin IGP, localpref 100, valid, external, best > Last update: Wed Jun 8 10:20:46 2005 > > I contacted with AS28747, but could not get any reply back to check > whether they get this prefix from us or not. > > I would like to ask you to check whether you get this prefix from > AS28747. > If so, not sure but resetting the session with AS28747 would make any help? > > Kind regards. > > Arife -- Alexander Koch / ako4-ripe Tiscali Int., Peering Coordination Phone +49 6103 916 480, Fax +49 6103 916 464 ----- End forwarded message ----- On Wed, Jun 08, 2005 at 04:03:04PM +0200, Rene Wilhelm wrote: > Hi Arife, > > I understand it's a difficult issue; fortunately we're left > with only 1 debogon prefix: > > whois -h riswhois -F -M 87/8 |grep 12654 > 12654 87.255.248.0/21 1 > > The other one, 87.192.0.0/16, is now announced by AS25441 and seen > by 64 RIS peers. Perhaps all it takes to clear the bogus debogon > is for a new owner to insert a fresh announcement? > > If you want to continue contacting every AS which according > to the routing tables sees the debogon route, you could > also check route-views' routers for info. > > For example, @oregon-ix: > > x27$ telnet route-views.oregon-ix.net > [...] > route-views.oregon-ix.net>sh ip bgp 87.255.248.0/21 > BGP routing table entry for 87.255.248.0/21, version 60855137 > Paths: (1 available, best #1, table Default-IP-Routing-Table) > Not advertised to any peer > 3277 6820 3246 5400 5400 3257 28747 12654 > 194.85.4.55 from 194.85.4.55 (194.85.4.55) > Origin IGP, localpref 100, valid, external, best > Community: 3277:6820 3277:65361 > > Only the "5400 3257 28747 12654" part is in common with RIS, > the other ASNs are different. > > Cheers, > > -- Rene > > > > Hi Mike, > > > > I'm chasing those guys who still think we announce that prefix. But I have > > not got any useful info from them. Last, I contacted with AS9177, but I > > have not got any reply back. > > > > I attached the e-mail that I got from Tiscali, it looks this route still > > is hanging there because of a Cisco bug or maybe other vendor OS bugs. > > I do not know what else I could do be honest ... > > > > Arife > > > > -- > > > > From: Alexander Koch > > To: Arife Vural > > Subject: Re: Need a favor > > Message-ID: <20050608120049.GA21021 at shekinah.ip.tiscali.net> > > References: <20050608120017.GC22290 at ripe.net> > > Mime-Version: 1.0 > > Content-Type: text/plain; charset=us-ascii > > Content-Disposition: inline > > In-Reply-To: <20050608120017.GC22290 at ripe.net> > > Organization: Tiscali International Network B.V. > > X-NCC-RegID: eu.nacnet > > User-Agent: Mutt/1.5.9i > > X-RIPE-Spam-Level: > > X-RIPE-Spam-Tests: BAYES_00 > > X-RIPE-Spam-Status: U 0.298951 / -2.6 > > X-RIPE-Signature: f24e950eeaafece3eb369dee26ae860b > > Status: RO > > Content-Length: 1707 > > Lines: 50 > > > > Hello Arife, > > > > what you see is probably comparable to IPv6 ghosts routes > > where a /35 more specific route sticked in the routing table > > long after it was theoretically withdrawn. > > > > We currently do not see the route from RealROOT, but then, > > AS28747 was changed to AS 9009 two weeks ago or so. Also > > seeing the AS path I believe you can safely assume AS5400 > > (BT's backbone) is not seeing it either... your best bet > > might be to contact bgp at sunrise.net and/or AS9177 directly. > > > > Does that help? > > > > Best regards, > > Alexander > > > > On Wed, 8 June 2005 14:00:17 +0200, Arife Vural wrote: > > > Hi Alexander, > > > > > > Part of De-bogonising project we were announcing 87/8. We stopped it > > > for a while, but it's seen in routing tables. Be honest, I could not > > > explain why this route was still in the routing tables even if we do > > > not have any entries in our config file for that prefix. > > > > > > On rrc00, it's seen like that, > > > > > > rrc00> sh ip bgp 87.255.248.0/21 > > > BGP routing table entry for 87.255.248.0/21 > > > Paths: (1 available, best #1, table Default-IP-Routing-Table) > > > Not advertised to any peer > > > 9177 6730 5400 3257 28747 12654 > > > 212.47.190.1 from 212.47.190.1 (213.193.66.42) > > > Origin IGP, localpref 100, valid, external, best > > > Last update: Wed Jun 8 10:20:46 2005 > > > > > > I contacted with AS28747, but could not get any reply back to check > > > whether they get this prefix from us or not. > > > > > > I would like to ask you to check whether you get this prefix from AS28747. > > > If so, not sure but resetting the session with AS28747 would make any help? > > > > > > Kind regards. > > > > > > Arife > > > > -- > > Alexander Koch / ako4-ripe > > Tiscali Int., Peering Coordination > > Phone +49 6103 916 480, Fax +49 6103 916 464 > > > > On Tue, Jun 07, 2005 at 10:13:17AM +0200, RIPE NCC Hostmaster wrote: > > > Dear Colleagues, > > > > > > It's quiet in this ticket for quite a while, while on the Net it's not > > > so quiet: the ranges are still (again?) announced and visible > > > (in case you don't know): > > > > > > route: 87.255.248.0/21 > > > origin: AS12654 > > > descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. > > > lastupd-frst: 2005-06-05 14:10Z 212.47.190.1 at rrc00 > > > lastupd-last: 2005-06-05 14:10Z 212.47.190.1 at rrc00 > > > seen-at: rrc00 > > > num-rispeers: 1 > > > source: RISWHOIS > > > > > > We are still curious when is it going to stop. > > > > > > > > > -- > > > Sincerely, > > > > > > Mike Petuschak > > > RIPE NCC > > > > > > > > > > > > > Hi Arife, > > > > > > > > Thanks for the update. > > > > > > > > Today RISwhois only sees 1 (one) peer at rrc00 forwarding the > > > > old debogon announcments from 87/8: > > > > > > > > route: 87.192.0.0/16 > > > > origin: AS12654 > > > > descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. > > > > lastupd-frst: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > > > > lastupd-last: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > > > > seen-at: rrc00 > > > > num-rispeers: 1 > > > > source: RISWHOIS > > > > > > > > route: 87.255.248.0/21 > > > > origin: AS12654 > > > > descr: RIPE-NCC-RIS-AS RIPE NCC RIS Project. > > > > lastupd-frst: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > > > > lastupd-last: 2005-06-01 10:11Z 212.47.190.1 at rrc00 > > > > seen-at: rrc00 > > > > num-rispeers: 1 > > > > source: RISWHOIS > > > > > > > > > > > > The last update is yesterday, 10:11 UTC (14:11 local time) > > > > is that when you reset the session with AS28747? > > > > > > > > -- Rene From henk at ripe.net Fri Jun 10 14:27:10 2005 From: henk at ripe.net (Henk Uijterwaal) Date: Fri, 10 Jun 2005 14:27:10 +0200 Subject: [ris-int] Re: RRC13 & RRC14 announcements In-Reply-To: <200506091218.j59CISUU005209@birch.ripe.net> References: <200506091218.j59CISUU005209@birch.ripe.net> Message-ID: <6.2.1.2.2.20050610142323.02cde690@localhost> Shane, Arife, See below, sorry for the Dutch. Bottom line: Rene noticed that we never announced the existence of RRC13 and 14, and thus do not have any peering sessions there yet. In particular after all the trouble to get the Moscow RRC running, that seems like a waste of time. Matthew used to do these announcements in the past, but he left. I guess I assumed that you'd do this, but then again I don't know if we ever agreed this. I'm happy to do this though. So, do you want to send an announcement or should we do this? Henk At 14:18 09/06/2005, Rene Wilhelm wrote: >Henk, > >Tijdens het werken aan ripe50 routing minutes vroeg ik me af of >RRC13 (moskou) en RRC14 (palo alto, former rrc08) ooit aangekondigd waren >aan de community. Matthew deed dat in het verleden. > >Zojuist heb ik even zitten rond kijken op www.ripe.net en voorzover ik kan >zien is er nooit iets gemeld over deze 2 route collectors. :( > >Het laatste news item over RIS in http://www.ripe.net/news/ >dateert van 20 july 2004, "announcing RRC12 / DE-CIX" > >http://www.ripe.net/projects/ris/news.html gaat ietsje verder maar heeft >ook niets over de RRC13/14, de laatste melding daar is van 30 sept 2004, >"BGPlay upgraded". > >In de ris-users lijst is de laatste RRC gerelateerde mail de aankondiging >van 1 september 2004, over de verhuizing van de RRC08/MAE-WEST. Hoewel >beloofd, is er nooit een follow up geweest waarin de activering van (nu) >RRC14 in PAIX werd aangekondigd. > >Tenslotte viel me op dat RRC13/Moskou tot nu toe geen enkele peering sessie >lijkt te hebben, alle ruwe data files op halfweg zijn (uncompressed) 0 bytes >lang. Toch wel zonde van alle inspanningen om die box aan de praat te >krijgen. > > >-- Rene ------------------------------------------------------------------------------ Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net RIPE Network Coordination Centre http://www.amsterdamned.org/~henk P.O.Box 10096 Singel 258 Phone: +31.20.5354414 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 The Netherlands The Netherlands Mobile: +31.6.55861746 ------------------------------------------------------------------------------ Look here junior, don't you be so happy. And for Heaven's sake, don't you be so sad. (Tom Verlaine) From arife at ripe.net Fri Jun 10 14:39:53 2005 From: arife at ripe.net (Arife Vural) Date: Fri, 10 Jun 2005 14:39:53 +0200 Subject: [ris-int] Re: RRC13 & RRC14 announcements In-Reply-To: <6.2.1.2.2.20050610142323.02cde690@localhost> References: <200506091218.j59CISUU005209@birch.ripe.net> <6.2.1.2.2.20050610142323.02cde690@localhost> Message-ID: <20050610123952.GI27419@ripe.net> Hi Henk, We announced RRC14, we sent the e-mail indiviually all the peers. Since PAIX does not have IX maillinglist. At that time, when we discussed to send it to NANOG mailling list but ISC guys somehow did not like the idea I do not know remember the reason now. We did not announce RRC13 yet. I sent the announcement to Russian guy, he would translate and forward to IX maillinglist, but I have not heard from him. I will ping him. Arife On Fri, Jun 10, 2005 at 02:27:10PM +0200, Henk Uijterwaal wrote: > Shane, Arife, > > See below, sorry for the Dutch. Bottom line: Rene noticed that we > never announced the existence of RRC13 and 14, and thus do not have > any peering sessions there yet. In particular after all the trouble > to get the Moscow RRC running, that seems like a waste of time. > > Matthew used to do these announcements in the past, but he left. I > guess I assumed that you'd do this, but then again I don't know if > we ever agreed this. I'm happy to do this though. > > So, do you want to send an announcement or should we do this? > > Henk > > > > > > At 14:18 09/06/2005, Rene Wilhelm wrote: > >Henk, > > > >Tijdens het werken aan ripe50 routing minutes vroeg ik me af of > >RRC13 (moskou) en RRC14 (palo alto, former rrc08) ooit aangekondigd waren > >aan de community. Matthew deed dat in het verleden. > > > >Zojuist heb ik even zitten rond kijken op www.ripe.net en voorzover ik kan > >zien is er nooit iets gemeld over deze 2 route collectors. :( > > > >Het laatste news item over RIS in http://www.ripe.net/news/ > >dateert van 20 july 2004, "announcing RRC12 / DE-CIX" > > > >http://www.ripe.net/projects/ris/news.html gaat ietsje verder maar heeft > >ook niets over de RRC13/14, de laatste melding daar is van 30 sept 2004, > >"BGPlay upgraded". > > > >In de ris-users lijst is de laatste RRC gerelateerde mail de aankondiging > >van 1 september 2004, over de verhuizing van de RRC08/MAE-WEST. Hoewel > >beloofd, is er nooit een follow up geweest waarin de activering van (nu) > >RRC14 in PAIX werd aangekondigd. > > > >Tenslotte viel me op dat RRC13/Moskou tot nu toe geen enkele peering sessie > >lijkt te hebben, alle ruwe data files op halfweg zijn (uncompressed) 0 > >bytes > >lang. Toch wel zonde van alle inspanningen om die box aan de praat te > >krijgen. > > > > > >-- Rene > > ------------------------------------------------------------------------------ > Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net > RIPE Network Coordination Centre http://www.amsterdamned.org/~henk > P.O.Box 10096 Singel 258 Phone: +31.20.5354414 > 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 > The Netherlands The Netherlands Mobile: +31.6.55861746 > ------------------------------------------------------------------------------ > > Look here junior, don't you be so happy. > And for Heaven's sake, don't you be so sad. (Tom Verlaine) From wilhelm at ripe.net Fri Jun 10 15:01:18 2005 From: wilhelm at ripe.net (Rene Wilhelm) Date: Fri, 10 Jun 2005 15:01:18 +0200 Subject: [ris-int] Re: RRC13 & RRC14 announcements In-Reply-To: Message from Arife Vural of "Fri, 10 Jun 2005 14:39:53 +0200." <20050610123952.GI27419@ripe.net> Message-ID: <200506101301.j5AD1IUU016556@birch.ripe.net> Hi Arife, Announcing to IX lists is one thing, but we also *used* to announce to the public at large! A news flash on RIPE NCC homepage, an item in the RIS news page, a mail to ris-users list etc. That hasn't happened since RRC12 last year. The RIS news at http://www.ripe.net/projects/ris/news.html mentions RRC08 leaving MAE WEST in september last year, but no word on it returning as RRC14 at PAIX. -- Rene > We announced RRC14, we sent the e-mail indiviually all the peers. > Since PAIX does not have IX maillinglist. At that time, when we discussed > to send it to NANOG mailling list but ISC guys somehow did not like > the idea I do not know remember the reason now. > > We did not announce RRC13 yet. I sent the announcement to Russian > guy, he would translate and forward to IX maillinglist, but I have not > heard from him. I will ping him. > > Arife From arife at ripe.net Fri Jun 10 15:12:16 2005 From: arife at ripe.net (Arife Vural) Date: Fri, 10 Jun 2005 15:12:16 +0200 Subject: [ris-int] Re: RRC13 & RRC14 announcements In-Reply-To: <200506101301.j5AD1IUU016556@birch.ripe.net> References: <20050610123952.GI27419@ripe.net> <200506101301.j5AD1IUU016556@birch.ripe.net> Message-ID: <20050610131216.GJ27419@ripe.net> > Announcing to IX lists is one thing, but we also *used* to announce > to the public at large! A news flash on RIPE NCC homepage, an item > in the RIS news page, a mail to ris-users list etc. That hasn't > happened since RRC12 last year. It looks I missed out ris-users, normally I use to send there as well. > The RIS news at http://www.ripe.net/projects/ris/news.html > mentions RRC08 leaving MAE WEST in september last year, > but no word on it returning as RRC14 at PAIX. Matthew was doing that, will update that page. Arife From james at ripe.net Fri Jun 10 16:43:41 2005 From: james at ripe.net (James Aldridge) Date: Fri, 10 Jun 2005 16:43:41 +0200 Subject: [ris-int] Re: RRC13 & RRC14 announcements In-Reply-To: Message from Arife Vural of "Fri, 10 Jun 2005 14:39:53 +0200." <20050610123952.GI27419@ripe.net> Message-ID: <200506101443.j5AEhfUU013788@birch.ripe.net> Arife Vural wrote: > We did not announce RRC13 yet. I sent the announcement to Russian > guy, he would translate and forward to IX maillinglist, but I have not > heard from him. I will ping him. Email list for the MCK-IX is . They also have a route server there which Evgueni Kouskevitch offered a peering with (this was all happenning just before RIPE50 so things were somewhat busy on the OPS side). James From henk at ripe.net Mon Jun 13 11:48:44 2005 From: henk at ripe.net (Henk Uijterwaal) Date: Mon, 13 Jun 2005 11:48:44 +0200 Subject: [ris-int] Re: RRC13 & RRC14 announcements In-Reply-To: <200506101301.j5AD1IUU016556@birch.ripe.net> References: <200506101301.j5AD1IUU016556@birch.ripe.net> Message-ID: <6.2.1.2.2.20050613114520.02d07e08@localhost> At 15:01 10/06/2005, Rene Wilhelm wrote: >Hi Arife, > >Announcing to IX lists is one thing, but we also *used* to announce >to the public at large! A news flash on RIPE NCC homepage, an item >in the RIS news page, a mail to ris-users list etc. That hasn't >happened since RRC12 last year. Yes, this used to happen and I think it is a good thing. We should tell users and the public at large that the RIS has 2 new locations. In the past, Matthew usually did this with Comms. It is probably a matter of digging up an old announcement, edit, then send. Do you want to take this up or do we have to take action? Henk >The RIS news at http://www.ripe.net/projects/ris/news.html >mentions RRC08 leaving MAE WEST in september last year, >but no word on it returning as RRC14 at PAIX. > >-- Rene > > > > We announced RRC14, we sent the e-mail indiviually all the peers. > > Since PAIX does not have IX maillinglist. At that time, when we discussed > > to send it to NANOG mailling list but ISC guys somehow did not like > > the idea I do not know remember the reason now. > > > > We did not announce RRC13 yet. I sent the announcement to Russian > > guy, he would translate and forward to IX maillinglist, but I have not > > heard from him. I will ping him. > > > > Arife ------------------------------------------------------------------------------ Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net RIPE Network Coordination Centre http://www.amsterdamned.org/~henk P.O.Box 10096 Singel 258 Phone: +31.20.5354414 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 The Netherlands The Netherlands Mobile: +31.6.55861746 ------------------------------------------------------------------------------ Look here junior, don't you be so happy. And for Heaven's sake, don't you be so sad. (Tom Verlaine) From arife at ripe.net Mon Jun 13 14:23:01 2005 From: arife at ripe.net (Arife Vural) Date: Mon, 13 Jun 2005 14:23:01 +0200 Subject: [ris-int] Re: RRC13 & RRC14 announcements In-Reply-To: <6.2.1.2.2.20050613114520.02d07e08@localhost> References: <200506101301.j5AD1IUU016556@birch.ripe.net> <6.2.1.2.2.20050613114520.02d07e08@localhost> Message-ID: <20050613122301.GF24293@ripe.net> Hi Henk, > Yes, this used to happen and I think it is a good thing. We should tell > users and the public at large that the RIS has 2 new locations. In the > past, Matthew usually did this with Comms. It is probably a matter of > digging > up an old announcement, edit, then send. Do you want to take this up or > do we have to take action? I can do that. Russian guy is away for a week, I will do both announcement next week. Arife. From colitti at dia.uniroma3.it Mon Jun 13 16:19:33 2005 From: colitti at dia.uniroma3.it (Lorenzo Colitti) Date: Mon, 13 Jun 2005 16:19:33 +0200 Subject: [ris-int] Announcing new AS-set stuffing experiments? Message-ID: <42AD95F5.40506@dia.uniroma3.it> Hi ris-int, since nanog's reaction to my post explaining our AS-set stuffing techniques generated fewer flames than expected, I was thinking of announcing AS-set stuffing experiments over IPv4 today or tomorrow. I would start with an experiment to determine how far large AS-sets penetrate into the Internet. Idea: announce progressively longer AS-sets containing only AS 12654 (so AS-paths like 12654 {n * 12654}) and see if the large AS-sets survive all the way to the RRCs or not. This would: a) provide results we need b) eliminate some opposition by showing that large AS-sets are safe c) not irritate people because we're only using our own ASn The values of n would be 5, 10, 20, 50, 75, 100. This is well below the safety limit we have seen with Ciscos (254). Once that is done, I would announce other experiments using other people's ASes, saying that people can opt-out if they don't want their AS to appear. Thoughts? Cheers, Lorenzo -- --------------------------------------------------------- Lorenzo Colitti Ph.D student Computer Networks research group Roma Tre University colitti at dia.uniroma3.it +39-0655173215 --------------------------------------------------------- From lorenzo at ripe.net Tue Jun 14 15:01:55 2005 From: lorenzo at ripe.net (Lorenzo Colitti) Date: Tue, 14 Jun 2005 15:01:55 +0200 Subject: [ris-int] Draft announcement to nanog Message-ID: <42AED543.7010602@ripe.net> Hi Henk, here's the announcement I was thinking of sending to nanog. What do you think? Cheers, Lorenzo ==========================8<-------------------------- From: lorenzo at ripe.net To: routing-wg at ripe.net, nanog at merit.edu Cc: henk at ripe.net, compunet at dia.uniroma3.it Hi, as part of our AS-set stuffing experiments (described, including links to in-depth information, in [1]), we will be announcing unusually large AS-sets on Thursday 16 June. The prefixes involved will be 84.205.73.0/24 and 84.205.89.0/24, both originating in AS12654. The AS-sets will consist of AS12654 repeated n times, thus, the paths will look like 12654 {12654, 12654, ..., 12654}. No other AS numbers will be used. The values of n we will use are 25, 50, 75 and 100. The announcements are designed to measure the effectiveness of our techniques in today's Internet with today's IPv4 operational practices. This is *not* a test to see if routers will fall over: we have successfully tested longer AS-sets in the lab on both Cisco and Juniper, and longer AS-paths and AS-sets have been observed in the wild [2,3]. See [1] for more information on the safety of these announcements. The proposed schedule is as follows: 84.205.73.0/24 84.205.89.0/24 14:00 UTC: 25-element AS-set 50-element AS-set 14:30 UTC: withdrawal withdrawal 16:00 UTC: 75-element AS-set 100-element AS-set 16:30 UTC: withdrawal withdrawal If anyone should see a problem during the announcements, please contact me and I will take immediate action. Regards, Lorenzo [1] http://www.merit.edu/mail.archives/nanog/2005-06/msg00210.html [2] http://www.ripe.net/projects/ris/Talks/0101_RIPE38_AA/sld003.html [3] http://www.ripe.net/maillists/ncc-archives/ris-users/2002/msg00044.html -- lorenzo at ripe.net colitti at dia.uniroma3.it www.ripe.net www.dia.uniroma3.it/~compunet RIPE NCC Roma Tre Computer Networks research group From henk at ripe.net Wed Jun 15 07:55:21 2005 From: henk at ripe.net (Henk Uijterwaal) Date: Wed, 15 Jun 2005 07:55:21 +0200 Subject: [ris-int] Draft announcement to nanog In-Reply-To: <42AED543.7010602@ripe.net> References: <42AED543.7010602@ripe.net> Message-ID: <6.2.1.2.2.20050615075509.02c98978@localhost> At 15:01 14/06/2005, Lorenzo Colitti wrote: >Hi Henk, > >here's the announcement I was thinking of sending to nanog. What do you think? Sounds good, Henk >Cheers, >Lorenzo > >==========================8<-------------------------- > >From: lorenzo at ripe.net >To: routing-wg at ripe.net, nanog at merit.edu >Cc: henk at ripe.net, compunet at dia.uniroma3.it > >Hi, > >as part of our AS-set stuffing experiments (described, including links to >in-depth information, in [1]), we will be announcing unusually large >AS-sets on Thursday 16 June. > >The prefixes involved will be 84.205.73.0/24 and 84.205.89.0/24, both >originating in AS12654. The AS-sets will consist of AS12654 repeated n >times, thus, the paths will look like 12654 {12654, 12654, ..., 12654}. No >other AS numbers will be used. The values of n we will use are 25, 50, 75 >and 100. > >The announcements are designed to measure the effectiveness of our >techniques in today's Internet with today's IPv4 operational practices. >This is *not* a test to see if routers will fall over: we have >successfully tested longer AS-sets in the lab on both Cisco and Juniper, >and longer AS-paths and AS-sets have been observed in the wild [2,3]. See >[1] for more information on the safety of these announcements. > >The proposed schedule is as follows: > > 84.205.73.0/24 84.205.89.0/24 >14:00 UTC: 25-element AS-set 50-element AS-set >14:30 UTC: withdrawal withdrawal > >16:00 UTC: 75-element AS-set 100-element AS-set >16:30 UTC: withdrawal withdrawal > >If anyone should see a problem during the announcements, please contact me >and I will take immediate action. > > >Regards, >Lorenzo > > >[1] http://www.merit.edu/mail.archives/nanog/2005-06/msg00210.html >[2] http://www.ripe.net/projects/ris/Talks/0101_RIPE38_AA/sld003.html >[3] http://www.ripe.net/maillists/ncc-archives/ris-users/2002/msg00044.html >-- >lorenzo at ripe.net colitti at dia.uniroma3.it >www.ripe.net www.dia.uniroma3.it/~compunet >RIPE NCC Roma Tre Computer Networks research group ------------------------------------------------------------------------------ Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net RIPE Network Coordination Centre http://www.amsterdamned.org/~henk P.O.Box 10096 Singel 258 Phone: +31.20.5354414 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 The Netherlands The Netherlands Mobile: +31.6.55861746 ------------------------------------------------------------------------------ Look here junior, don't you be so happy. And for Heaven's sake, don't you be so sad. (Tom Verlaine) From henk at ripe.net Wed Jun 15 10:35:39 2005 From: henk at ripe.net (Henk Uijterwaal) Date: Wed, 15 Jun 2005 10:35:39 +0200 Subject: [ris-int] RIS meeting on Monday Message-ID: <6.2.1.2.2.20050615103052.02ca0008@localhost> Arife, others, Can we please have a RIS meeting next Monday (20/6)? I have 2 agenda topics: - Outcome of discussion with LACNIC to install an RRC at their site. This came up during RIPE50. They wanted to install TB's in Brazil and during the discussion, we realized that an RRC in Brazil (at the Sao Paolo IX) would be useful as well. I want to summarize the discussion and see if our plans have any sense of reality. - myASN feature requests. I got a few of them. Thanks, Henk ------------------------------------------------------------------------------ Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net RIPE Network Coordination Centre http://www.amsterdamned.org/~henk P.O.Box 10096 Singel 258 Phone: +31.20.5354414 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 The Netherlands The Netherlands Mobile: +31.6.55861746 ------------------------------------------------------------------------------ Look here junior, don't you be so happy. And for Heaven's sake, don't you be so sad. (Tom Verlaine) From shane at ripe.net Wed Jun 15 11:02:52 2005 From: shane at ripe.net (Shane Kerr) Date: Wed, 15 Jun 2005 11:02:52 +0200 Subject: [ris-int] RIS meeting on Monday In-Reply-To: <6.2.1.2.2.20050615103052.02ca0008@localhost> References: <6.2.1.2.2.20050615103052.02ca0008@localhost> Message-ID: <42AFEEBC.1070900@ripe.net> Henk Uijterwaal wrote: > Arife, others, > > Can we please have a RIS meeting next Monday (20/6)? I have 2 agenda > topics: > > - Outcome of discussion with LACNIC to install an RRC at their site. > This came up during RIPE50. They wanted to install TB's in Brazil > and during the discussion, we realized that an RRC in Brazil (at the > Sao Paolo IX) would be useful as well. I want to summarize the > discussion and see if our plans have any sense of reality. > > - myASN feature requests. I got a few of them. > Also: - Update on RIS performance investigation - RRC02 from SFINX to TELEHOUSE From henk at ripe.net Wed Jun 15 11:52:05 2005 From: henk at ripe.net (Henk Uijterwaal) Date: Wed, 15 Jun 2005 11:52:05 +0200 Subject: [ris-int] Re: RRC13 & RRC14 announcements In-Reply-To: <20050613122301.GF24293@ripe.net> References: <200506101301.j5AD1IUU016556@birch.ripe.net> <6.2.1.2.2.20050613114520.02d07e08@localhost> <20050613122301.GF24293@ripe.net> Message-ID: <6.2.1.2.2.20050615115155.02d27918@localhost> At 14:23 13/06/2005, Arife Vural wrote: >Hi Henk, > > > Yes, this used to happen and I think it is a good thing. We should tell > > users and the public at large that the RIS has 2 new locations. In the > > past, Matthew usually did this with Comms. It is probably a matter of > > digging > > up an old announcement, edit, then send. Do you want to take this up or > > do we have to take action? > >I can do that. Russian guy is away for a week, I will do both announcement >next week. OK, fine. Henk >Arife. ------------------------------------------------------------------------------ Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net RIPE Network Coordination Centre http://www.amsterdamned.org/~henk P.O.Box 10096 Singel 258 Phone: +31.20.5354414 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 The Netherlands The Netherlands Mobile: +31.6.55861746 ------------------------------------------------------------------------------ Look here junior, don't you be so happy. And for Heaven's sake, don't you be so sad. (Tom Verlaine) From henk at ripe.net Wed Jun 15 14:59:53 2005 From: henk at ripe.net (Henk Uijterwaal) Date: Wed, 15 Jun 2005 14:59:53 +0200 Subject: [ris-int] Re: R: RIPE-NCC Testbox Order In-Reply-To: <95CA231BBE264E448548383D86776AA918A100@blackberry.pressoff ice.va> References: <95CA231BBE264E448548383D86776AA918A100@blackberry.pressoffice.va> Message-ID: <6.2.1.2.2.20050615145806.02c09248@localhost> Hi, In a related discussion At 16:29 06/06/2005, Stefano Pasquini wrote: [...] >Also the RIS project for us is a lot interesting and would want to >participate, do you have some suggestions for this service? >Many thanks for your support. This is the Vatican city Internet office, obviously located in Rome. Perhaps we can set up peering with them in Milano. Can you contact him to sort this out? Henk ------------------------------------------------------------------------------ Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net RIPE Network Coordination Centre http://www.amsterdamned.org/~henk P.O.Box 10096 Singel 258 Phone: +31.20.5354414 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 The Netherlands The Netherlands Mobile: +31.6.55861746 ------------------------------------------------------------------------------ Look here junior, don't you be so happy. And for Heaven's sake, don't you be so sad. (Tom Verlaine) From arife at ripe.net Thu Jun 16 11:06:31 2005 From: arife at ripe.net (Arife Vural) Date: Thu, 16 Jun 2005 11:06:31 +0200 Subject: [ris-int] RIS meeting on Monday In-Reply-To: <42AFEEBC.1070900@ripe.net> References: <6.2.1.2.2.20050615103052.02ca0008@localhost> <42AFEEBC.1070900@ripe.net> Message-ID: <20050616090631.GL24870@ripe.net> That sounds good. Let's have this Monday at 10.00 in Training room as usual time. I can not reach Ctime from home, will update all your agenda's tomorrow. Arife On Wed, Jun 15, 2005 at 11:02:52AM +0200, Shane Kerr wrote: > Henk Uijterwaal wrote: > > > Arife, others, > > > > Can we please have a RIS meeting next Monday (20/6)? I have 2 agenda > > topics: > > > > - Outcome of discussion with LACNIC to install an RRC at their site. > > This came up during RIPE50. They wanted to install TB's in Brazil > > and during the discussion, we realized that an RRC in Brazil (at the > > Sao Paolo IX) would be useful as well. I want to summarize the > > discussion and see if our plans have any sense of reality. > > > > - myASN feature requests. I got a few of them. > > > Also: > > - Update on RIS performance investigation > > - RRC02 from SFINX to TELEHOUSE From arife at ripe.net Fri Jun 17 11:12:14 2005 From: arife at ripe.net (Arife Vural) Date: Fri, 17 Jun 2005 11:12:14 +0200 Subject: [ris-int] Time Out 07.07.2005:09:00 - 14.07.2005:18:00 Message-ID: <200506170912.j5H9CEUU031959@birch.ripe.net> <<>> <<>> <<>> Dear Colleagues, Please note the following time out: Who: Arife Vural First Day: 07.07.2005 Starts at: 09:00 Last Day: 14.07.2005 Ends at: 18:00 Working days: [6.00] Type: VAC Reason: [Turkey] If you have any further questions, please do not hesitate to contact me. Thank you, Arife Vural From james at ripe.net Fri Jun 17 14:31:50 2005 From: james at ripe.net (James Aldridge) Date: Fri, 17 Jun 2005 14:31:50 +0200 Subject: [ris-int] RIS meeting on Monday In-Reply-To: <20050616090631.GL24870@ripe.net> References: <6.2.1.2.2.20050615103052.02ca0008@localhost> <42AFEEBC.1070900@ripe.net> <20050616090631.GL24870@ripe.net> Message-ID: <20050617123150.2D56F60063@localhost.ripe.net> Arife Vural wrote: > > That sounds good. Let's have this Monday at 10.00 in Training room > as usual time. Looks like the Training Room is occupied from 10:00 until 14:00 on Monday (Employee Satisfaction Survey stuff). How about the Small Meeting Room? James > I can not reach Ctime from home, will update all your agenda's > tomorrow. > > Arife > > On Wed, Jun 15, 2005 at 11:02:52AM +0200, Shane Kerr wrote: > > Henk Uijterwaal wrote: > > > > > Arife, others, > > > > > > Can we please have a RIS meeting next Monday (20/6)? I have 2 agenda > > > topics: > > > > > > - Outcome of discussion with LACNIC to install an RRC at their site. > > > This came up during RIPE50. They wanted to install TB's in Brazil > > > and during the discussion, we realized that an RRC in Brazil (at the > > > Sao Paolo IX) would be useful as well. I want to summarize the > > > discussion and see if our plans have any sense of reality. > > > > > > - myASN feature requests. I got a few of them. > > > > > Also: > > > > - Update on RIS performance investigation > > > > - RRC02 from SFINX to TELEHOUSE > From ris-request at ripe.net Fri Jun 17 17:08:54 2005 From: ris-request at ripe.net (RIPE NCC RIS) Date: Fri, 17 Jun 2005 17:08:54 +0200 Subject: [ris-int] Re: NCC#2005061931 [ris] R: RIPE-NCC Testbox Order In-Reply-To: <6.2.1.2.2.20050615145806.02c09248@localhost>; from Henk Uijterwaal on Wed, 15 Jun 2005 14:59:53 +0200 References: <95CA231BBE264E448548383D86776AA918A100@blackberry.pressoffice.va> <6.2.1.2.2.20050615145806.02c09248@localhost> Message-ID: <200506171508.j5HF8saO032569@cat.ripe.net> Hi Henk, I can contact Stefano to suggest the peering. Do you have his e-mail contact? Thanks, Vasco On Wed, 15 Jun 2005 14:59:53 +0200, Henk Uijterwaal wrote: > Hi, > > In a related discussion > > At 16:29 06/06/2005, Stefano Pasquini wrote: > > [...] > > >Also the RIS project for us is a lot interesting and would want to > >participate, do you have some suggestions for this service? > >Many thanks for your support. > > This is the Vatican city Internet office, obviously located in Rome. > Perhaps we can set up peering with them in Milano. > > Can you contact him to sort this out? > > Henk > > > > ------------------------------------------------------------------------------ > Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net > RIPE Network Coordination Centre http://www.amsterdamned.org/~henk > P.O.Box 10096 Singel 258 Phone: +31.20.5354414 > 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 > The Netherlands The Netherlands Mobile: +31.6.55861746 > ------------------------------------------------------------------------------ > > Look here junior, don't you be so happy. > And for Heaven's sake, don't you be so sad. (Tom Verlaine) -- From arife at ripe.net Sat Jun 18 23:11:09 2005 From: arife at ripe.net (Arife Vural) Date: Sat, 18 Jun 2005 23:11:09 +0200 Subject: [ris-int] RIS meeting on Monday In-Reply-To: <20050617123150.2D56F60063@localhost.ripe.net> References: <6.2.1.2.2.20050615103052.02ca0008@localhost> <42AFEEBC.1070900@ripe.net> <20050616090631.GL24870@ripe.net> <20050617123150.2D56F60063@localhost.ripe.net> Message-ID: <20050618211109.GA1240@ripe.net> > > That sounds good. Let's have this Monday at 10.00 in Training room > > as usual time. > > Looks like the Training Room is occupied from 10:00 until 14:00 on Monday > (Employee Satisfaction Survey stuff). How about the Small Meeting Room? Yeah, let's do there. Arife From henk at ripe.net Mon Jun 20 07:28:48 2005 From: henk at ripe.net (Henk Uijterwaal) Date: Mon, 20 Jun 2005 07:28:48 +0200 Subject: [ris-int] Re: NCC#2005061931 [ris] R: RIPE-NCC Testbox Order In-Reply-To: <200506171508.j5HF8saO032569@cat.ripe.net> References: <95CA231BBE264E448548383D86776AA918A100@blackberry.pressoffice.va> <6.2.1.2.2.20050615145806.02c09248@localhost> <200506171508.j5HF8saO032569@cat.ripe.net> Message-ID: <6.2.1.2.2.20050620072836.02cc5298@localhost> At 17:08 17/06/2005, RIPE NCC RIS wrote: >Hi Henk, > >I can contact Stefano to suggest the peering. >Do you have his e-mail contact? "Stefano Pasquini" Henk >Thanks, >Vasco > >On Wed, 15 Jun 2005 14:59:53 +0200, Henk Uijterwaal wrote: > > Hi, > > > > In a related discussion > > > > At 16:29 06/06/2005, Stefano Pasquini wrote: > > > > [...] > > > > >Also the RIS project for us is a lot interesting and would want to > > >participate, do you have some suggestions for this service? > > >Many thanks for your support. > > > > This is the Vatican city Internet office, obviously located in Rome. > > Perhaps we can set up peering with them in Milano. > > > > Can you contact him to sort this out? > > > > Henk > > > > > > > > > ------------------------------------------------------------------------------ > > Henk Uijterwaal Email: > henk.uijterwaal(at)ripe.net > > RIPE Network Coordination Centre http://www.amsterdamned.org/~henk > > P.O.Box 10096 Singel 258 Phone: +31.20.5354414 > > 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 > > The Netherlands The Netherlands Mobile: +31.6.55861746 > > > ------------------------------------------------------------------------------ > > > > Look here junior, don't you be so happy. > > And for Heaven's sake, don't you be so sad. (Tom Verlaine) >-- ------------------------------------------------------------------------------ Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net RIPE Network Coordination Centre http://www.amsterdamned.org/~henk P.O.Box 10096 Singel 258 Phone: +31.20.5354414 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 The Netherlands The Netherlands Mobile: +31.6.55861746 ------------------------------------------------------------------------------ Look here junior, don't you be so happy. And for Heaven's sake, don't you be so sad. (Tom Verlaine) From asp at partan.com Mon Jun 20 09:56:51 2005 From: asp at partan.com (Andrew Partan) Date: Mon, 20 Jun 2005 09:56:51 +0200 Subject: [ris-int] alarm create error Message-ID: <6.2.1.2.2.20050620095642.02c3e1a0@localhost> I was creating alarms for AS 3944 and got this: System error error: DBI connect('myasn;host=193.0.0.210;port=3306','myasn',...) failed: Can't connect to MySQL server on '193.0.0.210' (111) at /usr/local/lib/perl5/site_perl/5.8.0/Alzabo/Driver/MySQL.pm line 188 Stack: [/usr/local/perl5.8.0/lib/perl5/5.8.0/Carp.pm:191] [/usr/local/lib/perl5/site_perl/5.8.0/mach/DBI.pm:596] [/usr/local/lib/perl5/site_perl/5.8.0/mach/DBI.pm:646] [/usr/local/lib/perl5/site_perl/5.8.0/Alzabo/Driver/MySQL.pm:188] [/usr/local/lib/perl5/site_perl/5.8.0/Alzabo/Driver/MySQL.pm:35] [/usr/local/lib/perl5/site_perl/5.8.0/Alzabo/Runtime/Schema.pm:122] [/home/risops/myasn/lib/RIPE/NCC/myASn/Data.pm:134] [/export/risfsa13/www/ris/myasn/newalarm.html:146] [/export/risfsa13/www/ris/myasn/autohandler.html:69] [/export/risfsa13/www/ris/myasn/syshandler:29] code stack: I hit the back button & redid the create & it worked just fine the 2nd time. --asp From asp at partan.com Mon Jun 20 09:56:56 2005 From: asp at partan.com (Andrew Partan) Date: Mon, 20 Jun 2005 09:56:56 +0200 Subject: [ris-int] create new alarm questions & bugs Message-ID: <6.2.1.2.2.20050620095642.02c04040@localhost> Is there any documentation on the regex in the expected ASpath? None of the alarm types seem to do what I want, so I figured I'd try out advanced & see what happened. I have no transit customers & I know what all of my upstream & peer ASs are, so I want an expected AS path of something like this: (as1|as2|as3) 3944 I figure the regex is sorta like this: (^|\b)(2914|3066)\s(3944)$ but I'm not sure what the difference is between \b and \s nor if all of the ASs should be in () or not. When creating an alarm, I didn't put in any prefix, and when I hit the create, I got "Invalid chars in IP" and the alarm type reset to origin. The fields should have stayed all the same, the error message should have started with something like "Error: ", and the error message have mentioned which field had the error (the Prefix in my case). I was looking at managed alarms, hit edit to change one of my origin alarms, and the create alarm page changed the alarm type from origin to advanced & also cleared the my ASN field. --asp From simon at limmat.switch.ch Mon Jun 20 09:57:00 2005 From: simon at limmat.switch.ch (Simon Leinen) Date: Mon, 20 Jun 2005 09:57:00 +0200 Subject: [ris-int] Suggestion for improvement of myASN alarms Message-ID: <6.2.1.2.2.20050620095641.02c97348@localhost> Dear RIS team, I frequently receive alerts from MyASN, and I think it's because I have only specified our "transit" providers' ASNs in the "transit" alarm for 130.59.0.0/16. Unfortunately, these alerts don't contain the AS path that was seen (and that didn't match the regular expression I specified). So it's hard for me to fix the definition of the alarm. Please consider adding a column with the AS-path information to the table in the alert messages. Thanks & regards, -- Simon. Received: from chx400.switch.ch ([130.59.10.2]) by central.switch.ch with esmtp (Exim 3.20 #1) id 1CosTA-0006gM-00 for simon at switch.ch; Thu, 13 Jan 2005 01:04:08 +0100 Received: from postman.ripe.net ([193.0.0.199]) by chx400.switch.ch with esmtp (Exim 3.20 #1) id 1CosT9-0004Kg-00 for simon at limmat.switch.ch; Thu, 13 Jan 2005 01:04:08 +0100 Received: by postman.ripe.net (Postfix, from userid 8) id C27D525093; Thu, 13 Jan 2005 01:04:07 +0100 (CET) Received: from birch.ripe.net (birch.ripe.net [193.0.1.96]) by postman.ripe.net (Postfix) with ESMTP id A567D2509B for ; Thu, 13 Jan 2005 01:04:05 +0100 (CET) Received: from diemen.ripe.net (diemen.ripe.net [193.0.0.213]) by birch.ripe.net (8.12.10/8.11.6) with ESMTP id j0D0458Q014871 for ; Thu, 13 Jan 2005 01:04:05 +0100 Received: (from risops at localhost) by diemen.ripe.net (8.12.10/8.12.6) id j0CNWk6J030328; Wed, 12 Jan 2005 23:32:46 GMT Message-Id: <200501122332.j0CNWk6J030328 at diemen.ripe.net> X-Authentication-Warning: diemen.ripe.net: risops set sender to myasn-bounce at ripe.net using -f X-RIPE-Spam-Level: X-RIPE-Spam-Tests: ALL_TRUSTED,BAYES_00 X-RIPE-Spam-Status: U 0.296466 / -5.9 X-RIPE-Signature: 51f508fc1c86c020a1ee9167b0580d07 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on diotima.switch.ch X-Spam-Level: From: myASn Notifications To: simon at limmat.switch.ch Subject: New alarms for 559 Date: Wed, 12 Jan 2005 23:32:46 GMT X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.0.2 Dear myASn contact, New alarms were detected for 559. Please find the details below. Depending on your detail level settings you might not see all the events. Please use the web interface for further details. -- myASn System Advanced alarm 1114 (Default), 130.59.0.0/16 (exceptions not shown), \b(3549|1299|3320)\s(559)\b, MinED: 1, MinEC: 1, ADW: 3600 .=------+---------------+----------------+-----------------+--------------------------+-------------------------=. | RRC | Prefix(es) | Peer(s) | Conflicting ASs | First Seen | Last Seen | |=------+---------------+----------------+-----------------+--------------------------+-------------------------=| | rrc05 | 130.59.0.0/16 | 193.203.0.7 | | Wed Jan 12 21:52:57 2005 | Wed Jan 12 21:53:23 2005 | |=------+---------------+----------------+-----------------+--------------------------+-------------------------=| | rrc03 | 130.59.0.0/16 | 195.69.144.63 | | Wed Jan 12 21:26:36 2005 | Wed Jan 12 21:28:25 2005 | | | | 194.153.154.84 | | | | '=------+---------------+----------------+-----------------+--------------------------+-------------------------=' From arife at ripe.net Mon Jun 20 10:48:08 2005 From: arife at ripe.net (Arife Vural) Date: Mon, 20 Jun 2005 10:48:08 +0200 Subject: [simon@limmat.switch.ch: [ris-int] Suggestion for improvement of myASN alarms] Message-ID: <20050620084808.GA20370@ripe.net> Hi Henk, It looks I got back this guy. You can check it out from here. http://www.ris.ripe.net/myasn/bugs.html There is also ticket number there. Arife ----- Forwarded message from Simon Leinen ----- From: Simon Leinen To: ris-int at ripe.net Subject: [ris-int] Suggestion for improvement of myASN alarms Date: Mon, 20 Jun 2005 09:57:00 +0200 Dear RIS team, I frequently receive alerts from MyASN, and I think it's because I have only specified our "transit" providers' ASNs in the "transit" alarm for 130.59.0.0/16. Unfortunately, these alerts don't contain the AS path that was seen (and that didn't match the regular expression I specified). So it's hard for me to fix the definition of the alarm. Please consider adding a column with the AS-path information to the table in the alert messages. Thanks & regards, -- Simon. Received: from chx400.switch.ch ([130.59.10.2]) by central.switch.ch with esmtp (Exim 3.20 #1) id 1CosTA-0006gM-00 for simon at switch.ch; Thu, 13 Jan 2005 01:04:08 +0100 Received: from postman.ripe.net ([193.0.0.199]) by chx400.switch.ch with esmtp (Exim 3.20 #1) id 1CosT9-0004Kg-00 for simon at limmat.switch.ch; Thu, 13 Jan 2005 01:04:08 +0100 Received: by postman.ripe.net (Postfix, from userid 8) id C27D525093; Thu, 13 Jan 2005 01:04:07 +0100 (CET) Received: from birch.ripe.net (birch.ripe.net [193.0.1.96]) by postman.ripe.net (Postfix) with ESMTP id A567D2509B for ; Thu, 13 Jan 2005 01:04:05 +0100 (CET) Received: from diemen.ripe.net (diemen.ripe.net [193.0.0.213]) by birch.ripe.net (8.12.10/8.11.6) with ESMTP id j0D0458Q014871 for ; Thu, 13 Jan 2005 01:04:05 +0100 Received: (from risops at localhost) by diemen.ripe.net (8.12.10/8.12.6) id j0CNWk6J030328; Wed, 12 Jan 2005 23:32:46 GMT Message-Id: <200501122332.j0CNWk6J030328 at diemen.ripe.net> X-Authentication-Warning: diemen.ripe.net: risops set sender to myasn-bounce at ripe.net using -f X-RIPE-Spam-Level: X-RIPE-Spam-Tests: ALL_TRUSTED,BAYES_00 X-RIPE-Spam-Status: U 0.296466 / -5.9 X-RIPE-Signature: 51f508fc1c86c020a1ee9167b0580d07 X-Spam-Checker-Version: SpamAssassin 3.0.2 (2004-11-16) on diotima.switch.ch X-Spam-Level: From: myASn Notifications To: simon at limmat.switch.ch Subject: New alarms for 559 Date: Wed, 12 Jan 2005 23:32:46 GMT X-Spam-Status: No, score=-2.6 required=5.0 tests=AWL,BAYES_00 autolearn=ham version=3.0.2 Dear myASn contact, New alarms were detected for 559. Please find the details below. Depending on your detail level settings you might not see all the events. Please use the web interface for further details. -- myASn System Advanced alarm 1114 (Default), 130.59.0.0/16 (exceptions not shown), \b(3549|1299|3320)\s(559)\b, MinED: 1, MinEC: 1, ADW: 3600 .=------+---------------+----------------+-----------------+--------------------------+-------------------------=. | RRC | Prefix(es) | Peer(s) | Conflicting ASs | First Seen | Last Seen | |=------+---------------+----------------+-----------------+--------------------------+-------------------------=| | rrc05 | 130.59.0.0/16 | 193.203.0.7 | | Wed Jan 12 21:52:57 2005 | Wed Jan 12 21:53:23 2005 | |=------+---------------+----------------+-----------------+--------------------------+-------------------------=| | rrc03 | 130.59.0.0/16 | 195.69.144.63 | | Wed Jan 12 21:26:36 2005 | Wed Jan 12 21:28:25 2005 | | | | 194.153.154.84 | | | | '=------+---------------+----------------+-----------------+--------------------------+-------------------------=' ----- End forwarded message ----- From arife at ripe.net Wed Jun 22 13:08:14 2005 From: arife at ripe.net (Arife Vural) Date: Wed, 22 Jun 2005 13:08:14 +0200 Subject: [ris-int] RIS meeting on Monday In-Reply-To: <6.2.1.2.2.20050615103052.02ca0008@localhost> References: <6.2.1.2.2.20050615103052.02ca0008@localhost> Message-ID: <20050622110814.GD27478@ripe.net> Hi Henk, > Arife, others, > > Can we please have a RIS meeting next Monday (20/6)? I have 2 agenda > topics: > > - Outcome of discussion with LACNIC to install an RRC at their site. > This came up during RIPE50. They wanted to install TB's in Brazil > and during the discussion, we realized that an RRC in Brazil (at the > Sao Paolo IX) would be useful as well. I want to summarize the > discussion and see if our plans have any sense of reality. I had chat with Shane about LACNIC box, he is also quite happy to have RRC at LACNIC region. Could you do the inital contact and whenever you feel SED or OPS needs to be involved, please let us know. Arife > > - myASN feature requests. I got a few of them. > > Thanks, > > Henk > > > ------------------------------------------------------------------------------ > Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net > RIPE Network Coordination Centre http://www.amsterdamned.org/~henk > P.O.Box 10096 Singel 258 Phone: +31.20.5354414 > 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 > The Netherlands The Netherlands Mobile: +31.6.55861746 > ------------------------------------------------------------------------------ > > Look here junior, don't you be so happy. > And for Heaven's sake, don't you be so sad. (Tom Verlaine) From henk at ripe.net Wed Jun 22 13:49:06 2005 From: henk at ripe.net (Henk Uijterwaal) Date: Wed, 22 Jun 2005 13:49:06 +0200 Subject: [ris-int] RIS meeting on Monday In-Reply-To: <20050622110814.GD27478@ripe.net> References: <6.2.1.2.2.20050615103052.02ca0008@localhost> <20050622110814.GD27478@ripe.net> Message-ID: <6.2.1.2.2.20050622134608.02d6c138@localhost> At 13:08 22/06/2005, Arife Vural wrote: >Hi Henk, > > > Arife, others, > > > > Can we please have a RIS meeting next Monday (20/6)? I have 2 agenda > > topics: > > > > - Outcome of discussion with LACNIC to install an RRC at their site. > > This came up during RIPE50. They wanted to install TB's in Brazil > > and during the discussion, we realized that an RRC in Brazil (at the > > Sao Paolo IX) would be useful as well. I want to summarize the > > discussion and see if our plans have any sense of reality. > >I had chat with Shane about LACNIC box, he is also quite happy to have >RRC at LACNIC region. > >Could you do the inital contact and whenever you feel SED or OPS needs >to be involved, please let us know. I'm already talking to them, contact is Milton Kaoru Kashiwakura. mkaoruka at cg.org.br Henk >Arife > > > > > - myASN feature requests. I got a few of them. > > > > Thanks, > > > > Henk > > > > > > > ------------------------------------------------------------------------------ > > Henk Uijterwaal Email: > henk.uijterwaal(at)ripe.net > > RIPE Network Coordination Centre http://www.amsterdamned.org/~henk > > P.O.Box 10096 Singel 258 Phone: +31.20.5354414 > > 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 > > The Netherlands The Netherlands Mobile: +31.6.55861746 > > > ------------------------------------------------------------------------------ > > > > Look here junior, don't you be so happy. > > And for Heaven's sake, don't you be so sad. (Tom Verlaine) ------------------------------------------------------------------------------ Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net RIPE Network Coordination Centre http://www.amsterdamned.org/~henk P.O.Box 10096 Singel 258 Phone: +31.20.5354414 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 The Netherlands The Netherlands Mobile: +31.6.55861746 ------------------------------------------------------------------------------ Look here junior, don't you be so happy. And for Heaven's sake, don't you be so sad. (Tom Verlaine) From wilhelm at ripe.net Wed Jun 22 20:13:52 2005 From: wilhelm at ripe.net (Rene Wilhelm) Date: Wed, 22 Jun 2005 20:13:52 +0200 Subject: [ris-int] Re: [Brett_Watson@isc.org: Comments regarding a new tool from the Route Views team] In-Reply-To: Message from Daniel Karrenberg of "Wed, 22 Jun 2005 11:44:01 +0200." <20050622094401.GA1334@reifer-wave.karrenberg.net> Message-ID: <200506221813.j5MIDq37022944@birch.ripe.net> Daniel, To answer your question from June 16th: no this is not exactly riswhois: >> The Route Views team is developing an application to map the changes >> in Origin-AS of IP prefixes over time. RISwhois doesn't keep history, only looks at the latest available RIB dumps, it cannot answer questions on changes in Origin-AS over time. >> The changes in Origin-AS will >> be based on data from current RIR databases. If I get this right, what Route Views intend to do is compare the origin AS data from prefixes seen in BGP feeds with what has been registered in the various routing registries ("RIR databases") and provide random access to the resulting data set. > I wanted to know if what they propose is not covered already by the RIS. > > - I am sure we have the data this needs. > - Do we have a UI that provides what they want? > - Does RISWHOIS provide part of it? > - can we make something like this quickly ourselves? We could modify RISwhois to (when asked with a flag) query a Routing Registry and compare the BGP origin with the registered origin, but that still wouldn't provide history. The current RIS DB does have history and could at least answer the question if the BGP origin AS has changed in the time period covered by the DB. However, it does not have any info on the *registered* origin AS; also the 3 months usually covered by RIS DB might be a bit short when looking back in history. As I see it, to provide the desired functionality, we'd need a DB with tables for RIS and IRR storing for each prefix a time series of origin AS (prefix_id, originAS, first, last). For convenience, you could add a flag indicating whether or not the origin matched the IRR during the whole (first,last) time period. Things get a bit tricky when RIS reports multiple origins. One could either do "majority voting" (origin seen by most RIS peers wins) or list both (all) origins seperated by e.g. a / Also, the odd cases of origin being an AS-set (like 84.205.73.0/24, 84.205.89.0/24 :) can be handled in several ways. -- Rene > ----- Forwarded message from Daniel Karrenberg ----- > > From: Daniel Karrenberg > To: RIPE NCC RIS Project People > Subject: [ris] [Brett_Watson at isc.org: Comments regarding a new tool from the > Route Views team] > Date: Thu, 16 Jun 2005 09:21:24 +0200 > Cc: > Mail-Followup-To: RIPE NCC RIS Project People > > Isn't this riswhois or do we not already have that? > > ----- Forwarded message from brett watson ----- > > Date: Wed, 15 Jun 2005 14:45:48 -0700 > From: brett watson > To: all at oarc.isc.org > Subject: Comments regarding a new tool from the Route Views team > X-RIPE-Spam-Level: > X-RIPE-Spam-Tests: BAYES_00 > X-RIPE-Spam-Status: N 0.000000 / -2.6 > > We received a request from Dave Meyer (part of the U. of Oregon Route > Views team) for feedback on a new tool they are building. For those > that don't know, the Route Views team (www.routeviews.org) collects, > logs, and provides real-time access to global routing data. We (the > OARC Secretariat) wanted to float this to the general membership for > any input you all might have regarding the current features of this > tool, or enhancements you believe OARC members might find useful. > > The Route Views team is developing an application to map the changes > in Origin-AS of IP prefixes over time. The changes in Origin-AS will > be based on data from current RIR databases. The Route Views team > envisioned this as a useful tool for providers to use until some form > of s*BGP is deployed, to help track down "hi-jacked" routes, and for > spam mitigation. The data may be searched via: > > - specific time/date > - time/date range > - frequency of changes (ie. last 10 origin-as changes for a > specific prefix) > > In addition, the Route Views team is considering using MRT to > visualize the output. The team asked for input on the questions > included below, and we would love to hear any member input/comments > on these questions/answers before we respond to Dave. Feel free to > send this to the all@ list for general discussion, or to me > personally and I will tabulate everything and send back to the list > one last time. > > > Questions from Route Views team > =========================== > > (i). Would you find this type of application useful, and for what > purposes? > > We envision a tool like this being useful for the DNS-OARC community > in several areas: > > DNS Anycast Experimentation - Visualizing the changes in Origin-AS > during an anycast experiment where an anycast prefix is announced/ > withdrawn over the course of several days, in order to better > understand the impact of anycast on the DNS. > > DSC Data Correlation - We have a recent example of how this kind of > tool would be useful. Several months ago, F-root saw a large "spike" > in queries that lasted for several days. After the spike subsided, > we were able to identify the source IP address of the spike but no > route existed in the global routing tables for the source IP. By > manually downloading historical data from route-views, we ascertained > that the source IP address was indeed announced by a different ISP > than current whois data would indicate should be announcing it. The > implications of having the ability to query for Origin-AS changes in > near real-time are obvious in this case. > > General DNS Data Correlation - Any statistics obtained about the DNS > (such as RIPE's dnsmon) could be correlated with changes in Origin-AS > to either validate or invalidate theories on DNS behavior. > > > (ii). What other features would you like to see? > > The usefulness of comparing actual Origin-AS data with RIR database > information is questionable, given the historical inaccuracies in RIR > data but in some cases the RIR data may give us a useful baseline. > > It seems that overall changes in the AS *path* may also be useful, in > addition to just the Origin-AS. > > > (iii). How would you like to see the output visualized? > > MRT seems like a fine method for visualizing the data. The BGPlay > application is a great way to visualize data from the RIPE RIS and > route-views data. > > > > -b > -- > Brett Watson > DNS Operations, Analysis, and Research Center > > ----- End forwarded message ----- > > ----- End forwarded message ----- From dfk at ripe.net Thu Jun 23 19:04:31 2005 From: dfk at ripe.net (Daniel Karrenberg) Date: Thu, 23 Jun 2005 19:04:31 +0200 Subject: [ris-int] Re: [Brett_Watson@isc.org: Comments regarding a new tool from the Route Views team] In-Reply-To: <200506221813.j5MIDq37022944@birch.ripe.net> References: <20050622094401.GA1334@reifer-wave.karrenberg.net> <200506221813.j5MIDq37022944@birch.ripe.net> Message-ID: <20050623170431.GA330@reifer-karrenberg-net.local> Rene, your answer is what I expected. Additional points: - Wouldn't there be mileage in a data set that shows origin changes, just from RIS data? How big would that get based on our last three months? - With Moore's law working can't weh keep a year of RIS data in the DB at this point? - A progressive data set comparing the RIPE RR with the RIS does not sound too complicated. E.g. a day or two work. Is it? -Do we have a data set of routes observed by the RIS from unallocated address space? - Does someone else have that? Daniel From arife at ripe.net Mon Jun 27 01:23:09 2005 From: arife at ripe.net (Arife Vural) Date: Mon, 27 Jun 2005 01:23:09 +0200 Subject: [ris-int] [arife: ANNOUNCEMENT: The RIS Project's Remote Route Collector is online at MSK-IX] Message-ID: <20050626232309.GA8174@ripe.net> Hi guys, Could you put a link to the following announcement from news page? Thanks. Arife ----- Forwarded message from arife ----- To: ris-users Subject: ANNOUNCEMENT: The RIS Project's Remote Route Collector is online at MSK-IX Date: Thu, 23 Jun 2005 16:51:43 +0200 Dear Colleagues, We are pleased to announce the deployment of the Routing Information Service (RIS) Project's Remote Route Collector, RRC13, at MSK-IX, Moscow. We are now ready to peer with MSK-IX members. We would like to thank Evgueni Kouskevitch and MSK-IX for their help. RRC13 has been operating since April 2005. It has an interface on the shared MSK-IX network. It collects routing information from all exchange members who peer with us. - Our peering address is: 193.232.244.114 - Our AS Number is: 12654 - Our policy: http://www.ripe.net/projects/ris/docs/rrc13.html The RIS started as a RIPE NCC project in 1999. It has grown to over 450 IPv4 and IPv6 peers at 12 data collection points in Europe, Japan and North America. We collect and make available BGP routing information by devising tools that can help ISPs debug problems without being limited to a BGP view. We provide RIS raw data regarding the historical development of the Internet. If you want to peer with the RIS, please send an e-mail to or use the form that you can find at: http://www.ris.ripe.net/peerreg.cgi You can find more information about RIS at: http://www.ripe.net/ris/ You can find RIS tools at: http://www.ripe.net/projects/ris/tools/index.html If you have any questions or comments, please send an e-mail to . -- Regards, Arife Vural RIPE NCC ----- End forwarded message ----- From arife at ripe.net Mon Jun 27 01:23:35 2005 From: arife at ripe.net (Arife Vural) Date: Mon, 27 Jun 2005 01:23:35 +0200 Subject: [ris-int] [arife: ANNOUNCEMENT: The RIS Project's Remote Route Collector is online at PAIX.] Message-ID: <20050626232335.GB8174@ripe.net> Same for this one please. Thanks. Arife ----- Forwarded message from arife ----- To: ris-users Subject: ANNOUNCEMENT: The RIS Project's Remote Route Collector is online at PAIX. Date: Thu, 23 Jun 2005 17:01:54 +0200 Dear All, It looks I forgot to send PAIX box announcement to ris-users lists. Please contact with us if you would be interested in peering with RIS at PAIX. Regards. Arife -- [Apologies for duplicate mails] Dear Colleagues, We are pleased to announce that we have relocated the RIS Project's second North American Remote Route Collector at PAIX, Palo Alto. We are now ready to peer with PAIX members. We would like to thank Paul Vixie and ISC for their help. RRC14, has been operating since December 2004. It has an interface on the shared PAIX network and runs both IPv4 and IPv6. It collects routing information from all exchange members who peer with us. - Our peering addresses are: IPv4: 198.32.176.6 IPv6: 3ffe:80a::9 - Our AS number is: 12654 - Our policy: http://www.ripe.net/projects/ris/docs/rrc14.html The Routing Information Service (RIS) started as a RIPE NCC project in 1999. It has grown to over 300 IPv4 and IPv6 peers at twelve data collection points in Europe, Japan and North America. We collect and make available BGP routing information by devising tools that can help ISPs debug problems without being limited to a BGP view. We provide RIS raw data regarding the historical development of the Internet. If you want to peer with the RIS, please send an e-mail to or use the web form that you can find at: http://www.ris.ripe.net/peerreg.cgi You can find more information about RIS at: http://www.ripe.net/ris/ You can find RIS tools at: http://www.ripe.net/projects/ris/tools/index.html If you have any questions or comments, please send an e-mail to . Regards. Arife Vural RIPE NCC ----- End forwarded message ----- From webmaster at ripe.net Mon Jun 27 10:31:54 2005 From: webmaster at ripe.net (RIPE NCC Webmaster) Date: Mon, 27 Jun 2005 10:31:54 +0200 Subject: [ris-int] Re: [arife: ANNOUNCEMENT: The RIS Project's Remote Route Collector is online at MSK-IX] In-Reply-To: Your message of Mon, 27 Jun 2005 01:23:09 +0200. <20050626232309.GA8174@ripe.net> References: <20050626232309.GA8174@ripe.net> Message-ID: <200506270831.j5R8Vs37031582@birch.ripe.net> Hi, Arife Vural writes: * * Hi guys, * * Could you put a link to the following announcement from news page? I see we have 2 new announcements for RIS, one for the rrc in Paolo Alto and one for the Moscow node. Is it ok if we combine the two and make one news item out of it? -Jeroen * * Thanks. * Arife * * ----- Forwarded message from arife ----- * * To: ris-users * Subject: ANNOUNCEMENT: The RIS Project's Remote Route Collector is online at MSK-IX * Date: Thu, 23 Jun 2005 16:51:43 +0200 * * * Dear Colleagues, * * We are pleased to announce the deployment of the Routing Information Service * (RIS) Project's Remote Route Collector, RRC13, at MSK-IX, Moscow. We are now * ready to peer with MSK-IX members. We would like to thank Evgueni Kouskevitch * and MSK-IX for their help. * * RRC13 has been operating since April 2005. It has an interface on the shared * MSK-IX network. It collects routing information from all exchange members who * peer with us. * * - Our peering address is: 193.232.244.114 * * - Our AS Number is: 12654 * * - Our policy: http://www.ripe.net/projects/ris/docs/rrc13.html * * The RIS started as a RIPE NCC project in 1999. It has grown to over 450 IPv4 * and IPv6 peers at 12 data collection points in Europe, Japan and North America. * * We collect and make available BGP routing information by devising tools that * can help ISPs debug problems without being limited to a BGP view. We provide * RIS raw data regarding the historical development of the Internet. * * If you want to peer with the RIS, please send an e-mail to * or use the form that you can find at: * * http://www.ris.ripe.net/peerreg.cgi * * You can find more information about RIS at: * * http://www.ripe.net/ris/ * * You can find RIS tools at: * * http://www.ripe.net/projects/ris/tools/index.html * * If you have any questions or comments, please send an e-mail to . * * -- * Regards, * Arife Vural * RIPE NCC * * * ----- End forwarded message ----- * From arife at ripe.net Mon Jun 27 10:33:14 2005 From: arife at ripe.net (Arife Vural) Date: Mon, 27 Jun 2005 10:33:14 +0200 Subject: [ris-int] Re: [arife: ANNOUNCEMENT: The RIS Project's Remote Route Collector is online at MSK-IX] In-Reply-To: <200506270831.j5R8Vs37031582@birch.ripe.net> References: <20050626232309.GA8174@ripe.net> <200506270831.j5R8Vs37031582@birch.ripe.net> Message-ID: <20050627083314.GA13461@ripe.net> > > I see we have 2 new announcements for RIS, one for the rrc in Paolo > Alto and one for the Moscow node. Is it ok if we combine the two and > make one news item out of it? Yes. It's fine. Arife > > -Jeroen > > * > * Thanks. > * Arife > * > * ----- Forwarded message from arife ----- > * > * To: ris-users > * Subject: ANNOUNCEMENT: The RIS Project's Remote Route Collector is online at MSK-IX > * Date: Thu, 23 Jun 2005 16:51:43 +0200 > * > * > * Dear Colleagues, > * > * We are pleased to announce the deployment of the Routing Information Service > * (RIS) Project's Remote Route Collector, RRC13, at MSK-IX, Moscow. We are now > * ready to peer with MSK-IX members. We would like to thank Evgueni Kouskevitch > * and MSK-IX for their help. > * > * RRC13 has been operating since April 2005. It has an interface on the shared > * MSK-IX network. It collects routing information from all exchange members who > * peer with us. > * > * - Our peering address is: 193.232.244.114 > * > * - Our AS Number is: 12654 > * > * - Our policy: http://www.ripe.net/projects/ris/docs/rrc13.html > * > * The RIS started as a RIPE NCC project in 1999. It has grown to over 450 IPv4 > * and IPv6 peers at 12 data collection points in Europe, Japan and North America. > * > * We collect and make available BGP routing information by devising tools that > * can help ISPs debug problems without being limited to a BGP view. We provide > * RIS raw data regarding the historical development of the Internet. > * > * If you want to peer with the RIS, please send an e-mail to > * or use the form that you can find at: > * > * http://www.ris.ripe.net/peerreg.cgi > * > * You can find more information about RIS at: > * > * http://www.ripe.net/ris/ > * > * You can find RIS tools at: > * > * http://www.ripe.net/projects/ris/tools/index.html > * > * If you have any questions or comments, please send an e-mail to . > * > * -- > * Regards, > * Arife Vural > * RIPE NCC > * > * > * ----- End forwarded message ----- > * From henk at ripe.net Wed Jun 29 07:56:56 2005 From: henk at ripe.net (Henk Uijterwaal) Date: Wed, 29 Jun 2005 07:56:56 +0200 Subject: [ris-int] Fwd: Bogon announcement mail Message-ID: <6.2.1.2.2.20050629075613.02c35a48@localhost> Folks, See below, can you please pick this up so things will be in place when the new /8's arrive. Thanks, Henk >Date: Tue, 28 Jun 2005 15:55:57 +0200 >From: leo vegoda >Organization: RIPE Network Coordination Centre >User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.3) >Gecko/20040910 >X-Accept-Language: en-us, en >To: henk at ripe.net >CC: Filiz Yilmaz , RS Management >Subject: Bogon announcement mail > >Hi Henk, > >I want to send a mail about the pilot prefix announcements from the new >IPv4 we're requesting. Before I get Comms to review the style, I'd be >grateful if you could review the content for me. In particular, I'm >concerned regarding the phrase "reachability tools". As far as I can tell, >neither the 'ping' nor 'traceroute' tools on >http://www.ris.ripe.net/cgi-bin/debogon.cgi actually work. Can you let me >know if that's right, and if so, what the schedule to fix them is? > >Thanks, > >-leo > >Dear Colleagues, > >This announcement is being sent to multiple lists. I apologise for duplicates. > >The RIPE NCC received the IPv4 address range [insert] from the IANA in >June 2005. > >We expect to start making allocations from them within the next few weeks. > >We have started announcing two prefixes from each /8, which originate in >AS12654. > >[insert list of prefixes] > >Details of the BGP announcements, reachability tools and other information >are available on our web site at: > >http://www.ris.ripe.net/debogon/debogon.html > >You may want to update any filters you have in place. > >Kind regards, > > > >-- >leo vegoda "Good enough is not good enough" >RIPE NCC Axel Pawlik >Registration Services Manager 3 June 2005 ------------------------------------------------------------------------------ Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net RIPE Network Coordination Centre http://www.amsterdamned.org/~henk P.O.Box 10096 Singel 258 Phone: +31.20.5354414 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 The Netherlands The Netherlands Mobile: +31.6.55861746 ------------------------------------------------------------------------------ Look here junior, don't you be so happy. And for Heaven's sake, don't you be so sad. (Tom Verlaine) From arife at ripe.net Wed Jun 29 10:43:19 2005 From: arife at ripe.net (Arife Vural) Date: Wed, 29 Jun 2005 10:43:19 +0200 Subject: [ris-int] [henk@ripe.net: [ris] Fwd: Bogon announcement mail] Message-ID: <20050629084319.GC23700@ripe.net> Hi James, Would you be interested in doing it? Arife ----- Forwarded message from Henk Uijterwaal ----- From: Henk Uijterwaal To: ris-int at ripe.net, ris at ripe.net Subject: [ris] Fwd: Bogon announcement mail Date: Wed, 29 Jun 2005 07:56:56 +0200 Cc: Folks, See below, can you please pick this up so things will be in place when the new /8's arrive. Thanks, Henk >Date: Tue, 28 Jun 2005 15:55:57 +0200 >From: leo vegoda >Organization: RIPE Network Coordination Centre >User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.7.3) >Gecko/20040910 >X-Accept-Language: en-us, en >To: henk at ripe.net >CC: Filiz Yilmaz , RS Management >Subject: Bogon announcement mail > >Hi Henk, > >I want to send a mail about the pilot prefix announcements from the new >IPv4 we're requesting. Before I get Comms to review the style, I'd be >grateful if you could review the content for me. In particular, I'm >concerned regarding the phrase "reachability tools". As far as I can tell, >neither the 'ping' nor 'traceroute' tools on >http://www.ris.ripe.net/cgi-bin/debogon.cgi actually work. Can you let me >know if that's right, and if so, what the schedule to fix them is? > >Thanks, > >-leo > >Dear Colleagues, > >This announcement is being sent to multiple lists. I apologise for >duplicates. > >The RIPE NCC received the IPv4 address range [insert] from the IANA in >June 2005. > >We expect to start making allocations from them within the next few weeks. > >We have started announcing two prefixes from each /8, which originate in >AS12654. > >[insert list of prefixes] > >Details of the BGP announcements, reachability tools and other information >are available on our web site at: > >http://www.ris.ripe.net/debogon/debogon.html > >You may want to update any filters you have in place. > >Kind regards, > > > >-- >leo vegoda "Good enough is not good enough" >RIPE NCC Axel Pawlik >Registration Services Manager 3 June 2005 ------------------------------------------------------------------------------ Henk Uijterwaal Email: henk.uijterwaal(at)ripe.net RIPE Network Coordination Centre http://www.amsterdamned.org/~henk P.O.Box 10096 Singel 258 Phone: +31.20.5354414 1001 EB Amsterdam 1016 AB Amsterdam Fax: +31.20.5354445 The Netherlands The Netherlands Mobile: +31.6.55861746 ------------------------------------------------------------------------------ Look here junior, don't you be so happy. And for Heaven's sake, don't you be so sad. (Tom Verlaine) ----- End forwarded message ----- From arife at ripe.net Thu Jun 30 09:58:47 2005 From: arife at ripe.net (Arife Vural) Date: Thu, 30 Jun 2005 09:58:47 +0200 Subject: [ris-int] Monday morning RIS meeeting Message-ID: <20050630075847.GC23585@ripe.net> Hi all, For Monday morning RIS meeting, I have an agenda point: - Discuss the RIS performance study and also come up with a suggestion how to improve the available structure. Before the meeting, please read the following documentation, all suggestions/feedbacks are welcome. http://iii/sed/twiki/bin/view/SED/RISPerformance#Proposal BTW, if you have any other agenda item please let me know. Arife