Lines Matching defs:dom
278 struct domain *dom;
280 for (dom = domains; dom != NULL; dom = dom->dom_next)
281 if (dom->dom_xid == xid)
283 return dom;
292 unique_xid(struct domain *dom)
296 tmp_xid = ((uint32_t)(unsigned long)dom) & 0xffffffff;
310 struct domain *dom;
314 dom = malloc(sizeof *dom);
315 if (dom == NULL) {
320 dom->dom_next = NULL;
322 (void)strlcpy(dom->dom_name, name, sizeof(dom->dom_name));
323 (void)memset(&dom->dom_server_addr, 0, sizeof(dom->dom_server_addr));
324 dom->dom_vers = YPVERS;
325 dom->dom_checktime = 0;
326 dom->dom_asktime = 0;
327 dom->dom_losttime = 0;
328 dom->dom_backofftime = 10;
329 dom->dom_lockfd = -1;
330 dom->dom_state = DOM_NEW;
331 dom->dom_xid = unique_xid(dom);
332 dom->dom_been_ypset = 0;
333 dom->dom_serversfile = NULL;
343 dom->dom_ypbindmode = default_ypbindmode;
344 if (dom->dom_ypbindmode == YPBIND_DIRECT) {
345 pathname = ypservers_filename(dom->dom_name);
350 dom->dom_ypbindmode = YPBIND_BROADCAST;
355 dom->dom_next = domains;
356 domains = dom;
358 return dom;
369 makelock(struct domain *dom)
375 dom->dom_name, dom->dom_vers);
393 removelock(struct domain *dom)
398 BINDINGDIR, dom->dom_name, dom->dom_vers);
490 struct domain *dom;
505 for (dom = domains; dom != NULL; dom = dom->dom_next)
506 if (!strcmp(dom->dom_name, dom_name))
510 if (dom == NULL) {
513 dom = domain_create(dom_name);
514 if (dom == NULL)
520 dom->dom_been_ypset = 1;
528 if (dom->dom_state == DOM_ALIVE && force == 0) {
529 if (!memcmp(&dom->dom_server_addr, raddrp,
530 sizeof(dom->dom_server_addr))) {
533 inet_ntoa(dom->dom_server_addr.sin_addr),
534 dom->dom_name);
538 inet_ntoa(dom->dom_server_addr.sin_addr),
539 dom->dom_name);
549 if (dom->dom_state == DOM_PINGING && force == 0) {
557 if (!memcmp(&dom->dom_server_addr, raddrp,
558 sizeof(dom->dom_server_addr))) {
559 dom->dom_state = DOM_ALIVE;
561 dom->dom_checktime = time(NULL) + 60;
565 inet_ntoa(dom->dom_server_addr.sin_addr),
566 dom->dom_name);
582 if (dom->dom_state == DOM_NEW ||
583 dom->dom_state == DOM_LOST ||
584 dom->dom_state == DOM_DEAD) {
585 dom->dom_asktime = 0;
623 (void)memcpy(&dom->dom_server_addr, raddrp,
624 sizeof(dom->dom_server_addr));
626 dom->dom_checktime = time(NULL) + 60;
627 dom->dom_state = DOM_ALIVE;
630 dom->dom_losttime = 0;
631 dom->dom_backofftime = 10;
635 dom->dom_name,
636 inet_ntoa(dom->dom_server_addr.sin_addr));
648 if (dom->dom_lockfd != -1)
649 (void)close(dom->dom_lockfd);
651 if ((fd = makelock(dom)) == -1)
654 dom->dom_lockfd = fd;
668 result = writev(dom->dom_lockfd, iov, 2);
674 (void)close(dom->dom_lockfd);
675 removelock(dom);
676 dom->dom_lockfd = -1;
706 struct domain *dom;
731 for (count = 0, dom = domains;
732 dom != NULL;
733 dom = dom->dom_next, count++) {
738 if (!strcmp(dom->dom_name, arg))
752 if (dom == NULL) {
753 dom = domain_create(arg);
754 if (dom != NULL) {
755 removelock(dom);
765 if (dom->dom_state == DOM_NEW) {
789 if (dom->dom_state == DOM_ALIVE && now < dom->dom_asktime + 5) {
795 if (dom->dom_checktime >= now) {
797 dom->dom_checktime = 0;
801 dom->dom_asktime = now;
806 dom->dom_server_addr.sin_addr.s_addr;
808 dom->dom_server_addr.sin_port;
809 DPRINTF("domain %s at %s/%d\n", dom->dom_name,
810 inet_ntoa(dom->dom_server_addr.sin_addr),
811 ntohs(dom->dom_server_addr.sin_port));
1075 direct(char *buf, int outlen, struct domain *dom)
1089 if (dom->dom_serversfile != NULL) {
1090 rewind(dom->dom_serversfile);
1092 path = ypservers_filename(dom->dom_name);
1093 dom->dom_serversfile = fopen(path, "r");
1094 if (dom->dom_serversfile == NULL) {
1112 while (fgets(line, (int)sizeof(line), dom->dom_serversfile) != NULL) {
1118 while ((c = getc(dom->dom_serversfile)) != '\n' && c != EOF)
1149 ypservers_filename(dom->dom_name));
1161 direct_set(char *buf, int outlen, struct domain *dom)
1177 dom->dom_name, dom->dom_vers);
1182 dom->dom_been_ypset = 0;
1199 dom->dom_been_ypset = 0;
1225 struct domain *dom;
1261 dom = domain_find(msg.rm_xid);
1262 if (dom
1263 (void)rpc_received(dom->dom_name, &raddr, 0, 0);
1282 struct domain *dom;
1318 dom = domain_find(msg.rm_xid);
1319 if (dom != NULL)
1320 (void)rpc_received(dom->dom_name, &raddr, 0, 0);
1339 nag_servers(struct domain *dom)
1341 char *dom_name = dom->dom_name;
1369 msg.rm_xid = dom->dom_xid;
1390 if (dom->dom_lockfd != -1) {
1391 (void)close(dom->dom_lockfd);
1392 dom->dom_lockfd = -1;
1393 removelock(dom);
1396 if (dom->dom_state == DOM_PINGING || dom->dom_state == DOM_LOST) {
1408 bindsin.sin_addr = dom->dom_server_addr.sin_addr;
1417 switch (dom->dom_ypbindmode) {
1419 if (dom->dom_been_ypset) {
1420 return direct_set(buf, outlen, dom);
1425 return direct(buf, outlen, dom);
1435 ping(struct domain *dom)
1437 char *dom_name = dom->dom_name;
1462 msg.rm_xid = dom->dom_xid;
1483 DPRINTF("ping %x\n", dom->dom_server_addr.sin_addr.s_addr);
1486 (struct sockaddr *)(void *)&dom->dom_server_addr,
1487 (socklen_t)(sizeof dom->dom_server_addr)) == -1)
1512 struct domain *dom;
1518 for (dom = domains; dom != NULL; dom = dom->dom_next) {
1519 if (dom->dom_checktime >= t) {
1522 switch (dom->dom_state) {
1525 dom->dom_checktime = t + 5;
1526 (void)nag_servers(dom);
1530 dom->dom_state = DOM_PINGING;
1531 dom->dom_checktime = t + 5;
1532 (void)ping(dom);
1536 dom->dom_state = DOM_LOST;
1537 dom->dom_losttime = t;
1538 dom->dom_checktime = t + 5;
1540 "server %s", dom->dom_name,
1541 inet_ntoa(dom->dom_server_addr.sin_addr));
1542 (void)nag_servers(dom);
1546 if (t > dom->dom_losttime + 60) {
1547 dom->dom_state = DOM_DEAD;
1548 dom->dom_backofftime = 10;
1551 dom->dom_name);
1553 dom->dom_checktime = t + 5;
1554 (void)nag_servers(dom);
1558 dom->dom_checktime = t + dom->dom_backofftime;
1559 backoff(&dom->dom_backofftime);
1560 (void)nag_servers(dom);
1578 struct domain *dom;
1581 for (dom = domains; dom != NULL; dom = dom->dom_next) {
1582 if (dom->dom_state == DOM_DEAD) {
1583 (void)nag_servers(dom);