diff options
author | Stefan Sperling <stsp@cvs.openbsd.org> | 2009-02-19 22:08:15 +0000 |
---|---|---|
committer | Stefan Sperling <stsp@cvs.openbsd.org> | 2009-02-19 22:08:15 +0000 |
commit | a454a5dd9ec56b00c4d46a9b67b6016f46f77774 (patch) | |
tree | 4a93c2fb36d505b043fadfade80111626c31b82e /usr.sbin/ospf6d | |
parent | 73f37df46eaa0ea604ad4b015b998ba6d2581315 (diff) |
Remove origination of Intra-Area-Prefix LSAs from ospfe.
Will soon be done in rde instead.
"Sure but don't wait too long before readding the code in rde" claudio@
Diffstat (limited to 'usr.sbin/ospf6d')
-rw-r--r-- | usr.sbin/ospf6d/interface.c | 3 | ||||
-rw-r--r-- | usr.sbin/ospf6d/ospfe.c | 105 | ||||
-rw-r--r-- | usr.sbin/ospf6d/ospfe.h | 3 |
3 files changed, 3 insertions, 108 deletions
diff --git a/usr.sbin/ospf6d/interface.c b/usr.sbin/ospf6d/interface.c index 5f231ad3410..09d76ad4e96 100644 --- a/usr.sbin/ospf6d/interface.c +++ b/usr.sbin/ospf6d/interface.c @@ -1,4 +1,4 @@ -/* $OpenBSD: interface.c,v 1.12 2009/02/19 22:05:32 stsp Exp $ */ +/* $OpenBSD: interface.c,v 1.13 2009/02/19 22:08:14 stsp Exp $ */ /* * Copyright (c) 2005 Claudio Jeker <claudio@openbsd.org> @@ -142,7 +142,6 @@ if_fsm(struct iface *iface, enum iface_event event) if (iface->state != old_state) { orig_rtr_lsa(iface); orig_link_lsa(iface); - orig_intra_lsa_rtr(iface); /* state change inform RDE */ ospfe_imsg_compose_rde(IMSG_IFINFO, diff --git a/usr.sbin/ospf6d/ospfe.c b/usr.sbin/ospf6d/ospfe.c index 95516b70ed6..0566d088a4e 100644 --- a/usr.sbin/ospf6d/ospfe.c +++ b/usr.sbin/ospf6d/ospfe.c @@ -1,4 +1,4 @@ -/* $OpenBSD: ospfe.c,v 1.23 2009/02/10 17:32:58 stsp Exp $ */ +/* $OpenBSD: ospfe.c,v 1.24 2009/02/19 22:08:14 stsp Exp $ */ /* * Copyright (c) 2005 Claudio Jeker <claudio@openbsd.org> @@ -296,7 +296,6 @@ ospfe_dispatch_main(int fd, short event, void *bula) if_fsm(iface, IF_EVT_DOWN); log_warnx("interface %s down", iface->name); } - orig_intra_lsa_rtr(iface); break; case IMSG_IFADD: if ((niface = malloc(sizeof(struct iface))) == NULL) @@ -309,7 +308,6 @@ ospfe_dispatch_main(int fd, short event, void *bula) narea = area_find(oeconf, niface->area_id); LIST_INSERT_HEAD(&narea->iface_list, niface, entry); - orig_intra_lsa_rtr(niface); break; case IMSG_IFDELETE: if (imsg.hdr.len != IMSG_HEADER_SIZE + @@ -322,7 +320,6 @@ ospfe_dispatch_main(int fd, short event, void *bula) fatalx("interface lost in ospfe"); LIST_REMOVE(iface, entry); - orig_intra_lsa_rtr(iface); if_del(iface); break; case IMSG_RECONF_CONF: @@ -1061,106 +1058,6 @@ orig_link_lsa(struct iface *iface) buf_free(buf); } -void -orig_intra_lsa_rtr(struct iface *iface_arg) -{ - struct lsa_hdr lsa_hdr; - struct lsa_intra_prefix lsa_intra; - struct lsa_prefix lsa_prefix; - struct in6_addr prefix; - struct buf *buf; - struct area *area; - struct iface *iface; - struct iface_addr *ia; - struct nbr *self; - u_int16_t numprefix; - u_int16_t chksum; - - /* XXX READ_BUF_SIZE */ - if ((buf = buf_dynamic(sizeof(lsa_hdr) + sizeof(lsa_intra), - READ_BUF_SIZE)) == NULL) - fatal("orig_intra_lsa_rtr"); - - /* reserve space for LSA header and Intra-Area-Prefix LSA header */ - if (buf_reserve(buf, sizeof(lsa_hdr) + sizeof(lsa_intra)) == NULL) - fatal("orig_intra_lsa_rtr: buf_reserve failed"); - - lsa_intra.ref_type = htons(LSA_TYPE_ROUTER); - lsa_intra.ref_lsid = 0; - lsa_intra.ref_adv_rtr = oeconf->rtr_id.s_addr; - - numprefix = 0; - self = NULL; - - if ((area = area_find(oeconf, iface_arg->area_id)) == NULL) - fatalx("interface lost area"); - - log_debug("orig_intra_lsa_rtr: area %s", inet_ntoa(area->id)); - - LIST_FOREACH(iface, &area->iface_list, entry) { - if (self == NULL && iface->self != NULL) - self = iface->self; - - if (iface->state & IF_STA_DOWN) - continue; - - TAILQ_FOREACH(ia, &iface->ifa_list, entry) { - if (IN6_IS_ADDR_LINKLOCAL(&ia->addr)) - continue; - - bzero(&lsa_prefix, sizeof(lsa_prefix)); - - if (iface->type == IF_TYPE_POINTOMULTIPOINT || - iface->state == IF_STA_LOOPBACK) { - lsa_prefix.prefixlen = 128; - } else { - lsa_prefix.prefixlen = ia->prefixlen; - lsa_prefix.metric = htons(iface->metric); - } - - if (lsa_prefix.prefixlen == 128) - lsa_prefix.options = OSPF_PREFIX_LA; - - inet6applymask(&prefix, &ia->addr, lsa_prefix.prefixlen); - log_debug("orig_intra_lsa_rtr: prefix %s, interface %s", - log_in6addr(&prefix), iface->name); - if (buf_add(buf, &lsa_prefix, sizeof(lsa_prefix))) - fatal("orig_intra_lsa_rtr: buf_add failed"); - if (buf_add(buf, &prefix.s6_addr[0], - LSA_PREFIXSIZE(lsa_prefix.prefixlen))) - fatal("orig_intra_lsa_rtr: buf_add failed"); - numprefix++; - } - - /* TOD: Add prefixes of directly attached hosts, too */ - /* TOD: Add prefixes for virtual links */ - } - - lsa_intra.numprefix = htons(numprefix); - memcpy(buf_seek(buf, sizeof(lsa_hdr), sizeof(lsa_intra)), - &lsa_intra, sizeof(lsa_intra)); - - /* LSA header */ - lsa_hdr.age = htons(DEFAULT_AGE); - lsa_hdr.type = htons(LSA_TYPE_INTRA_A_PREFIX); - lsa_hdr.ls_id = htonl(1); /* TODO: fragmentation */ - lsa_hdr.adv_rtr = oeconf->rtr_id.s_addr; - lsa_hdr.seq_num = htonl(INIT_SEQ_NUM); - lsa_hdr.len = htons(buf->wpos); - lsa_hdr.ls_chksum = 0; /* updated later */ - memcpy(buf_seek(buf, 0, sizeof(lsa_hdr)), &lsa_hdr, sizeof(lsa_hdr)); - - chksum = htons(iso_cksum(buf->buf, buf->wpos, LS_CKSUM_OFFSET)); - memcpy(buf_seek(buf, LS_CKSUM_OFFSET, sizeof(chksum)), - &chksum, sizeof(chksum)); - - if (self) - imsg_compose(ibuf_rde, IMSG_LS_UPD, self->peerid, 0, - buf->buf, buf->wpos); - - buf_free(buf); -} - u_int32_t ospfe_router_id(void) { diff --git a/usr.sbin/ospf6d/ospfe.h b/usr.sbin/ospf6d/ospfe.h index de492bc41c3..41f099c8ff0 100644 --- a/usr.sbin/ospf6d/ospfe.h +++ b/usr.sbin/ospf6d/ospfe.h @@ -1,4 +1,4 @@ -/* $OpenBSD: ospfe.h,v 1.13 2009/01/29 19:07:53 stsp Exp $ */ +/* $OpenBSD: ospfe.h,v 1.14 2009/02/19 22:08:14 stsp Exp $ */ /* * Copyright (c) 2004, 2005 Esben Norby <norby@openbsd.org> @@ -123,7 +123,6 @@ void ospfe_nbr_ctl(struct ctl_conn *); void orig_rtr_lsa(struct iface *); void orig_net_lsa(struct iface *); void orig_link_lsa(struct iface *); -void orig_intra_lsa_rtr(struct iface *); void ospfe_demote_area(struct area *, int); void ospfe_demote_iface(struct iface *, int); |