diff options
-rw-r--r-- | usr.sbin/ldpd/neighbor.c | 36 |
1 files changed, 12 insertions, 24 deletions
diff --git a/usr.sbin/ldpd/neighbor.c b/usr.sbin/ldpd/neighbor.c index 59c978237d9..8dcf33f4298 100644 --- a/usr.sbin/ldpd/neighbor.c +++ b/usr.sbin/ldpd/neighbor.c @@ -1,4 +1,4 @@ -/* $OpenBSD: neighbor.c,v 1.6 2010/02/18 09:26:29 claudio Exp $ */ +/* $OpenBSD: neighbor.c,v 1.7 2010/02/19 13:37:09 claudio Exp $ */ /* * Copyright (c) 2009 Michele Marchetto <michele@openbsd.org> @@ -211,7 +211,6 @@ void nbr_init(u_int32_t hashsize) { struct nbr_head *head; - struct nbr *nbr; u_int32_t hs, i; for (hs = 1; hs < hashsize; hs <<= 1) @@ -224,22 +223,6 @@ nbr_init(u_int32_t hashsize) LIST_INIT(&nbrtable.hashtbl[i]); nbrtable.hashmask = hs - 1; - - /* allocate a dummy neighbor used for self originated AS ext routes */ - if ((nbr = calloc(1, sizeof(*nbr))) == NULL) - fatal("nbr_init"); - - nbr->id.s_addr = ldpe_router_id(); - nbr->state = NBR_STA_DOWN; - nbr->peerid = NBR_IDSELF; - head = NBR_HASH(nbr->peerid); - LIST_INSERT_HEAD(head, nbr, hash); - - TAILQ_INIT(&nbr->mapping_list); - TAILQ_INIT(&nbr->withdraw_list); - TAILQ_INIT(&nbr->request_list); - TAILQ_INIT(&nbr->release_list); - TAILQ_INIT(&nbr->abortreq_list); } struct nbr * @@ -272,6 +255,12 @@ nbr_new(u_int32_t nbr_id, u_int16_t lspace, struct iface *iface, int self) nbr->priority = iface->priority; } + TAILQ_INIT(&nbr->mapping_list); + TAILQ_INIT(&nbr->withdraw_list); + TAILQ_INIT(&nbr->request_list); + TAILQ_INIT(&nbr->release_list); + TAILQ_INIT(&nbr->abortreq_list); + /* set event structures */ evtimer_set(&nbr->inactivity_timer, nbr_itimer, nbr); evtimer_set(&nbr->keepalive_timeout, nbr_ktimeout, nbr); @@ -618,21 +607,20 @@ int nbr_establish_connection(struct nbr *nbr) { struct sockaddr_in in; - int st; + bzero(&in, sizeof(in)); in.sin_family = AF_INET; in.sin_port = htons(LDP_PORT); in.sin_addr.s_addr = nbr->addr.s_addr; nbr->fd = socket(AF_INET, SOCK_STREAM, 0); - if (nbr->fd < 0) { + if (nbr->fd == -1) { log_debug("nbr_establish_connection: error while " "creating socket"); return (-1); } - st = connect(nbr->fd, (struct sockaddr *)&in, sizeof(in)); - if (st < 0 ) { + if (connect(nbr->fd, (struct sockaddr *)&in, sizeof(in)) == -1) { log_debug("nbr_establish_connection: error while " "connecting to %s", inet_ntoa(nbr->addr)); nbr_act_start_idtimer(nbr); @@ -682,7 +670,7 @@ nbr_send_labelmappings(struct nbr *nbr) { if (leconf->mode & MODE_ADV_UNSOLICITED) { ldpe_imsg_compose_lde(IMSG_LABEL_MAPPING_FULL, nbr->peerid, 0, - 0, 0); + NULL, 0); } } @@ -699,7 +687,7 @@ nbr_mapping_add(struct nbr *nbr, struct mapping_head *mh, struct map *map) me->prefixlen = map->prefixlen; me->label = map->label; - TAILQ_INSERT_HEAD(mh, me, entry); + TAILQ_INSERT_TAIL(mh, me, entry); } struct mapping_entry * |