static isc_result_t resconf_parsesortlist(irs_resconf_t *conf, FILE *fp) { int delim, res; unsigned int idx; char word[RESCONFMAXLINELEN]; char *p; delim = getword(fp, word, sizeof(word)); if (strlen(word) == 0U) return (ISC_R_UNEXPECTEDEND); /* Empty line after keyword. */ while (strlen(word) > 0U) { if (conf->sortlistnxt == RESCONFMAXSORTLIST) return (ISC_R_QUOTA); /* Too many values. */ p = strchr(word, '/'); if (p != NULL) *p++ = '\0'; idx = conf->sortlistnxt; INSIST(idx < sizeof(conf->sortlist)/sizeof(conf->sortlist[0])); res = create_addr(word, &conf->sortlist[idx].addr, 1); if (res != ISC_R_SUCCESS) return (res); if (p != NULL) { res = create_addr(p, &conf->sortlist[idx].mask, 0); if (res != ISC_R_SUCCESS) return (res); } else { /* * Make up a mask. (XXX: is this correct?) */ conf->sortlist[idx].mask = conf->sortlist[idx].addr; memset(&conf->sortlist[idx].mask.type, 0xff, sizeof(conf->sortlist[idx].mask.type)); } conf->sortlistnxt++; if (delim == EOF || delim == '\n') break; else delim = getword(fp, word, sizeof(word)); } return (ISC_R_SUCCESS); }
int Connect(struct sockaddr_in& addr, int sock_fd, const char* ipstr, const short int port) { if((ipstr != NULL) && (port >= 0)) if(create_addr(addr, ipstr, port) < 0) return -1; if(connect(sock_fd,(struct sockaddr*)&addr,sizeof(addr)) < 0) return -1; return 0; }
void exec_connect(char *path) { int fd = create_socket(); struct sockaddr_un addr = create_addr(path); if (connect(fd, (struct sockaddr *)&addr, sizeof(addr)) == -1) { perror("connect"); exit(1); } /* Copy stdin to socket */ copy_to_eof(STDIN_FILENO, fd); /* There's nothing more to write */ shutdown(fd, SHUT_WR); /* Copy socket to stdout */ copy_to_eof(fd, STDOUT_FILENO); }
int main(int argc, char *argv[]) { unsigned char *ifn = NULL; unsigned char *ip = NULL; int ret, opt; int add = -1; if (argc < 2) { usage(argv[0]); return 0; } while ((opt = getopt(argc, argv, "+ari:d:")) != -1) { switch (opt) { case 'd': ip = optarg; break; case 'i': ifn = optarg; break; case 'a': add = 1; break; case 'r': add = 0; break; default: usage(argv[0]); goto out; } } if (!ifn && !ip) { usage(argv[0]); goto out; } if (add == 1) { ret = create_addr(ifn, ip); if (ret != 0) { printf("create fail...\n"); } else { printf("create ok ....\n"); } } else if (add == 0) { ret = delete_addr(ifn, ip); if (ret != 0) { printf("delete fail...\n"); } else { printf("delete ok ....\n"); } } else { usage(argv[0]); } out: return 0; }