Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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;
}
Exemplo n.º 3
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);
}
Exemplo n.º 4
0
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;
}