Browse Source

move memory allocation for new peers into a new function, makes ID allocation

easier
OPENBSD_3_6
henning 20 years ago
parent
commit
bbe549999c
3 changed files with 28 additions and 16 deletions
  1. +21
    -3
      src/usr.sbin/ntpd/config.c
  2. +4
    -3
      src/usr.sbin/ntpd/ntpd.h
  3. +3
    -10
      src/usr.sbin/ntpd/parse.y

+ 21
- 3
src/usr.sbin/ntpd/config.c View File

@ -1,4 +1,4 @@
/* $OpenBSD: config.c,v 1.9 2004/07/28 16:38:43 henning Exp $ */
/* $OpenBSD: config.c,v 1.10 2004/08/10 12:41:15 henning Exp $ */
/* /*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@ -20,7 +20,11 @@
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <netinet/in.h>
#include <arpa/nameser.h>
#include <errno.h> #include <errno.h>
#include <resolv.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
@ -30,6 +34,8 @@
struct ntp_addr *host_v4(const char *); struct ntp_addr *host_v4(const char *);
struct ntp_addr *host_v6(const char *); struct ntp_addr *host_v6(const char *);
static u_int32_t maxid = 0;
int int
host(const char *s, struct ntp_addr **hn) host(const char *s, struct ntp_addr **hn)
{ {
@ -115,9 +121,9 @@ host_dns(const char *s, struct ntp_addr **hn)
struct sockaddr_in6 *sa_in6; struct sockaddr_in6 *sa_in6;
struct ntp_addr *h, *hh = NULL; struct ntp_addr *h, *hh = NULL;
memset(&hints, 0, sizeof(hints));
bzero(&hints, sizeof(hints));
hints.ai_family = PF_UNSPEC; hints.ai_family = PF_UNSPEC;
hints.ai_socktype = SOCK_STREAM; /* DUMMY */
hints.ai_socktype = SOCK_DGRAM; /* DUMMY */
error = getaddrinfo(s, NULL, &hints, &res0); error = getaddrinfo(s, NULL, &hints, &res0);
if (error) { if (error) {
log_warnx("could not parse \"%s\": %s", s, log_warnx("could not parse \"%s\": %s", s,
@ -156,3 +162,15 @@ host_dns(const char *s, struct ntp_addr **hn)
*hn = hh; *hn = hh;
return (cnt); return (cnt);
} }
struct ntp_peer *
new_peer(void)
{
struct ntp_peer *p;
if ((p = calloc(1, sizeof(struct ntp_peer))) == NULL)
fatal("conf_main server calloc");
p->id = ++maxid;
return (p);
}

+ 4
- 3
src/usr.sbin/ntpd/ntpd.h View File

@ -1,4 +1,4 @@
/* $OpenBSD: ntpd.h,v 1.31 2004/07/29 11:01:48 henning Exp $ */
/* $OpenBSD: ntpd.h,v 1.32 2004/08/10 12:41:15 henning Exp $ */
/* /*
* Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org> * Copyright (c) 2003, 2004 Henning Brauer <henning@openbsd.org>
@ -207,8 +207,9 @@ int parse_config(char *, struct ntpd_conf *);
int cmdline_symset(char *); int cmdline_symset(char *);
/* config.c */ /* config.c */
int host(const char *, struct ntp_addr **);
int host_dns(const char *, struct ntp_addr **);
int host(const char *, struct ntp_addr **);
int host_dns(const char *, struct ntp_addr **);
struct ntp_peer *new_peer(void);
/* ntp_msg.c */ /* ntp_msg.c */
int ntp_getmsg(char *, ssize_t, struct ntp_msg *); int ntp_getmsg(char *, ssize_t, struct ntp_msg *);


+ 3
- 10
src/usr.sbin/ntpd/parse.y View File

@ -1,4 +1,4 @@
/* $OpenBSD: parse.y,v 1.17 2004/07/29 11:01:48 henning Exp $ */
/* $OpenBSD: parse.y,v 1.18 2004/08/10 12:41:15 henning Exp $ */
/* /*
* Copyright (c) 2002, 2003, 2004 Henning Brauer <henning@openbsd.org> * Copyright (c) 2002, 2003, 2004 Henning Brauer <henning@openbsd.org>
@ -41,7 +41,6 @@ static int lineno = 1;
static int errors = 0; static int errors = 0;
static int pdebug = 1; static int pdebug = 1;
char *infile; char *infile;
static u_int32_t maxid;
int yyerror(const char *, ...); int yyerror(const char *, ...);
int yyparse(void); int yyparse(void);
@ -169,10 +168,7 @@ conf_main : LISTEN ON address {
free($2); free($2);
YYERROR; YYERROR;
} }
p = calloc(1, sizeof(struct ntp_peer));
if (p == NULL)
fatal("conf_main server calloc");
p->id = ++maxid;
p = new_peer();
h->next = NULL; h->next = NULL;
p->addr = h; p->addr = h;
p->addr_head.a = h; p->addr_head.a = h;
@ -189,9 +185,7 @@ conf_main : LISTEN ON address {
struct ntp_peer *p; struct ntp_peer *p;
struct ntp_addr *h, *next; struct ntp_addr *h, *next;
if ((p = calloc(1, sizeof(struct ntp_peer))) == NULL)
fatal("conf_main server calloc");
p->id = ++maxid;
p = new_peer();
for (h = $2->a; h != NULL; h = next) { for (h = $2->a; h != NULL; h = next) {
next = h->next; next = h->next;
if (h->ss.ss_family != AF_INET && if (h->ss.ss_family != AF_INET &&
@ -481,7 +475,6 @@ parse_config(char *filename, struct ntpd_conf *xconf)
conf = xconf; conf = xconf;
lineno = 1; lineno = 1;
errors = 0; errors = 0;
maxid = 0;
TAILQ_INIT(&conf->listen_addrs); TAILQ_INIT(&conf->listen_addrs);
TAILQ_INIT(&conf->ntp_peers); TAILQ_INIT(&conf->ntp_peers);


Loading…
Cancel
Save