Example #1
0
static int node_recovery(int argc, char **argv)
{
	int i, ret;

	if (!raw_output) {
		printf("Nodes In Recovery:\n");
		printf("  Id   Host:Port         V-Nodes       Zone\n");
	}

	for (i = 0; i < sd_nodes_nr; i++) {
		char host[128];
		struct sd_node_req req;

		addr_to_str(host, sizeof(host), sd_nodes[i].nid.addr, 0);

		sd_init_req((struct sd_req *)&req, SD_OP_STAT_RECOVERY);

		ret = send_light_req_get_response((struct sd_req *)&req, host,
						  sd_nodes[i].nid.port);
		if (ret == SD_RES_NODE_IN_RECOVERY) {
			addr_to_str(host, sizeof(host),
					sd_nodes[i].nid.addr, sd_nodes[i].nid.port);
			printf(raw_output ? "%d %s %d %d\n" : "%4d   %-20s%5d%11d\n",
				   i, host, sd_nodes[i].nr_vnodes,
				   sd_nodes[i].zone);
		}
	}

	return EXIT_SUCCESS;
}
Example #2
0
struct xio_session *sd_xio_gw_create_session(struct xio_context *ctx,
					     const struct node_id *nid,
					     void *user_ctx)
{
	struct xio_session *session;
	char url[256];
	struct xio_session_params params;

	if (nid->io_transport_type == IO_TRANSPORT_TYPE_RDMA)
		snprintf(url, 256, "rdma://%s",
			 addr_to_str(nid->io_addr, nid->io_port));
	else
		snprintf(url, 256, "tcp://%s",
			 addr_to_str(nid->io_addr, nid->io_port));

	memset(&params, 0, sizeof(params));
	params.type = XIO_SESSION_CLIENT;
	params.ses_ops = &gw_client_ses_ops;
	params.uri = url;
	params.user_context = user_ctx;

	session = xio_session_create(&params);

	return session;
}
Example #3
0
void print_data(struct db_cache *cache_elem, u_int32_t wtc, int num)
{
  struct pkt_primitives *data = &cache_elem->primitives;
  struct tm *lt;
  char src_mac[18], dst_mac[18], src_host[INET6_ADDRSTRLEN], dst_host[INET6_ADDRSTRLEN];
  int j;

  printf("%-8d  ", num);
  printf("%-5d  ", data->id);
#if defined (HAVE_L2)
  etheraddr_string(data->eth_shost, src_mac);
  printf("%-17s  ", src_mac);
  etheraddr_string(data->eth_dhost, dst_mac);
  printf("%-17s  ", dst_mac);
  printf("%-5d  ", data->vlan_id);
#endif
  printf("%-5d   ", data->src_as);
  printf("%-5d   ", data->dst_as);
#if defined ENABLE_IPV6
  addr_to_str(src_host, &data->src_ip);
  printf("%-45s  ", src_host);
  addr_to_str(dst_host, &data->dst_ip);
  printf("%-45s  ", dst_host);
#else
  addr_to_str(src_host, &data->src_ip);
  printf("%-15s  ", src_host);
  addr_to_str(dst_host, &data->dst_ip);
  printf("%-15s  ", dst_host);
#endif
  printf("%-5d     ", data->src_port);
  printf("%-5d     ", data->dst_port);
  printf("%-10s  ", _protocols[data->proto].name);
  printf("%-3d    ", data->tos);
#if defined HAVE_64BIT_COUNTERS
  printf("%-20llu  ", cache_elem->packet_counter);
  printf("%-20llu  ", cache_elem->flows_counter);
  printf("%-20llu  ", cache_elem->bytes_counter);
#else
  printf("%-10lu  ", cache_elem->packet_counter);
  printf("%-10lu  ", cache_elem->flows_counter);
  printf("%-10lu  ", cache_elem->bytes_counter);
#endif
  if (lh.sql_history) {
    if (!sql_history_since_epoch) {
      lt = localtime(&cache_elem->basetime);
      strftime(timebuf, SRVBUFLEN, "%Y-%m-%d %H:%M:%S" , lt);
      printf("%s\n", timebuf);
    }
    else printf("%u\n", cache_elem->basetime);
  }
  else printf("0\n");
}
Example #4
0
static void do_print_nodes_diff(const struct epoch_log *log1,
				const struct epoch_log *log2, uint16_t flags,
				char act)
{
	int i, j, nr_disk1 = 0, nr_disk2 = 0;
	const struct sd_node *entry1, *entry2;
	bool first = true;

	for (i = 0; i < log1->nr_nodes; i++) {
		entry1 = log1->nodes + i;
		if (flags & SD_CLUSTER_FLAG_DISKMODE) {
			for (nr_disk1 = 0; nr_disk1 < DISK_MAX; nr_disk1++) {
				if (entry1->disks[nr_disk1].disk_id == 0)
					break;
			}
		}
		for (j = 0; j < log2->nr_nodes; j++) {
			entry2 = log2->nodes + j;
			if (flags & SD_CLUSTER_FLAG_DISKMODE) {
				for (nr_disk2 = 0; nr_disk2 < DISK_MAX;
						nr_disk2++) {
					if (entry2->disks[nr_disk2].disk_id
							== 0)
						break;
				}
			}
			if (node_cmp(entry1, entry2) == 0
					&& nr_disk1 == nr_disk2)
				break;
		}

		if (j == log2->nr_nodes) {
			if (flags & SD_CLUSTER_FLAG_DISKMODE)
				printf("%s%c%s(%d)", first ? "" : ", ",
					act,
					addr_to_str(entry1->nid.addr,
						entry1->nid.port),
					nr_disk1);
			else
				printf("%s%c%s",
					first ? "" : ", ",
					act,
					addr_to_str(entry1->nid.addr,
						entry1->nid.port));
			first = false;
		}
	}
}
Example #5
0
void bmp_process_msg_route(char **bmp_packet, u_int32_t *len, struct bgp_peer *peer)
{
  struct bmp_data bdata;
  struct bmp_peer_hdr *bph;
  char tstamp_str[SRVBUFLEN], peer_ip[INET6_ADDRSTRLEN];

  if (!(bph = (struct bmp_peer_hdr *) bmp_get_and_check_length(bmp_packet, len, sizeof(struct bmp_peer_hdr)))) {
    Log(LOG_INFO, "INFO ( %s/core/BMP ): [Id: %s] [route] packet discarded: failed bmp_get_and_check_length() BMP peer hdr\n",
        config.name, peer->addr_str);
    return;
  }

  bmp_peer_hdr_get_family(bph, &bdata.family);
  bmp_peer_hdr_get_peer_ip(bph, &bdata.peer_ip, bdata.family);
  bmp_peer_hdr_get_bgp_id(bph, &bdata.bgp_id);
  bmp_peer_hdr_get_tstamp(bph, &bdata.tstamp);
  bmp_peer_hdr_get_peer_asn(bph, &bdata.peer_asn);
  bmp_peer_hdr_get_peer_type(bph, &bdata.peer_type);

  /* If no timestamp in BMP then let's generate one */
  if (!bdata.tstamp.tv_sec) gettimeofday(&bdata.tstamp, NULL);

  compose_timestamp(tstamp_str, SRVBUFLEN, &bdata.tstamp, TRUE, config.sql_history_since_epoch);
  addr_to_str(peer_ip, &bdata.peer_ip);

  // XXX: parse BGP UPDATE(s)
}
Example #6
0
static int node_list(int argc, char **argv)
{
	int i;

	if (!raw_output)
		printf("M   Id   Host:Port         V-Nodes       Zone\n");
	for (i = 0; i < sd_nodes_nr; i++) {
		char data[128];

		addr_to_str(data, sizeof(data), sd_nodes[i].nid.addr,
			    sd_nodes[i].nid.port);

		if (i == master_idx) {
			if (highlight)
				printf(TEXT_BOLD);
			printf(raw_output ? "* %d %s %d %d\n" : "* %4d   %-20s\t%2d%11d\n",
			       i, data, sd_nodes[i].nr_vnodes,
			       sd_nodes[i].zone);
			if (highlight)
				printf(TEXT_NORMAL);
		} else
			printf(raw_output ? "- %d %s %d %d\n" : "- %4d   %-20s\t%2d%11d\n",
			       i, data, sd_nodes[i].nr_vnodes,
			       sd_nodes[i].zone);
	}

	return EXIT_SUCCESS;
}
Example #7
0
void compose_json_tunnel_dst_host(json_t *obj, struct chained_cache *cc)
{
  char ip_address[INET6_ADDRSTRLEN];

  addr_to_str(ip_address, &cc->ptun->tunnel_dst_ip);
  json_object_set_new_nocheck(obj, "tunnel_ip_dst", json_string(ip_address));
}
Example #8
0
void Tee_init_socks()
{
  struct tee_receiver *target = NULL;
  struct sockaddr *sa;
  int pool_idx, recv_idx, err;
  char dest_addr[256], dest_serv[256];

  for (pool_idx = 0; pool_idx < receivers.num; pool_idx++) {
    for (recv_idx = 0; recv_idx < receivers.pools[pool_idx].num; recv_idx++) {
      target = &receivers.pools[pool_idx].receivers[recv_idx];
      sa = (struct sockaddr *) &target->dest;

      if (sa->sa_family != 0) {
        if ((err = getnameinfo(sa, target->dest_len, dest_addr, sizeof(dest_addr),
            dest_serv, sizeof(dest_serv), NI_NUMERICHOST)) == -1) {
          Log(LOG_ERR, "ERROR ( %s/%s ): getnameinfo: %d\n", config.name, config.type, err);
          exit_plugin(1);
        }
      }

      target->fd = Tee_prepare_sock((struct sockaddr *) &target->dest, target->dest_len);

      if (config.debug) {
	struct host_addr recv_addr;
        u_char recv_addr_str[INET6_ADDRSTRLEN];
	u_int16_t recv_port;

	sa_to_addr(&target->dest, &recv_addr, &recv_port); 
        addr_to_str(recv_addr_str, &recv_addr);
        Log(LOG_DEBUG, "DEBUG ( %s/%s ): pool ID: %u :: receiver: %s :: fd: %d.\n",
                config.name, config.type, receivers.pools[pool_idx].id, recv_addr_str, target->fd);
      }
    }
  }
}
Example #9
0
void compose_json_peer_dst_ip(json_t *obj, struct chained_cache *cc)
{
  char ip_address[INET6_ADDRSTRLEN];

  addr_to_str(ip_address, &cc->pbgp->peer_dst_ip);
  json_object_set_new_nocheck(obj, "peer_ip_dst", json_string(ip_address));
}
Example #10
0
/** printout a delegation point info */
static int
ssl_print_name_dp(SSL* ssl, char* str, uint8_t* nm, uint16_t dclass,
	struct delegpt* dp)
{
	char buf[257];
	struct delegpt_ns* ns;
	struct delegpt_addr* a;
	int f = 0;
	if(str) { /* print header for forward, stub */
		char* c = ldns_rr_class2str(dclass);
		dname_str(nm, buf);
		if(!ssl_printf(ssl, "%s %s %s: ", buf, c, str)) {
			free(c);
			return 0;
		}
		free(c);
	}
	for(ns = dp->nslist; ns; ns = ns->next) {
		dname_str(ns->name, buf);
		if(!ssl_printf(ssl, "%s%s", (f?" ":""), buf))
			return 0;
		f = 1;
	}
	for(a = dp->target_list; a; a = a->next_target) {
		addr_to_str(&a->addr, a->addrlen, buf, sizeof(buf));
		if(!ssl_printf(ssl, "%s%s", (f?" ":""), buf))
			return 0;
		f = 1;
	}
	return ssl_printf(ssl, "\n");
}
Example #11
0
/*
 * \fn build_http_post_header()
 *
 * \param buff		buffer for storing the new header
 * \param content_len	value to use for the Content-length field
 * \param addr		value to use in the Host field
 *
 * \return Returns the length of the newly created HTTP string.
 *
 * \brief Builds an HTTP POST string in the specified buffer.
 */
int build_http_post_header(char *buff, int content_len, struct sockaddr *addr)
{
  unsigned short port = 0;
  char addrstr[INET6_ADDRSTRLEN];

  addr_to_str(addr, (__u8*)addrstr, INET6_ADDRSTRLEN);
  if (AF_INET == addr->sa_family)
    {
      port = ntohs(((struct sockaddr_in*)addr)->sin_port);
    }
  else if (AF_INET6 == addr->sa_family)
    {
      port = ntohs(((struct sockaddr_in6*)addr)->sin6_port);
    }

  sprintf(
    buff,
    "POST /RPC2 HTTP/1.0\r\nUser-Agent: %s %s\r\nHost: %s:%d\r\nContent-Type: text/xml\r\nContent-length: %d\r\n\r\n",
    HIP_NAME,
    HIP_VERSION,
    addrstr,
    port,
    content_len);
  return(strlen(buff));
}
Example #12
0
static int node_kill(int argc, char **argv)
{
	char host[128];
	int node_id, ret;
	struct sd_node_req req;
	const char *p = argv[optind++];

	if (!is_numeric(p)) {
		fprintf(stderr, "Invalid node id '%s', "
			"please specify a numeric value\n", p);
		exit(EXIT_USAGE);
	}

	node_id = strtol(p, NULL, 10);
	if (node_id < 0 || node_id >= sd_nodes_nr) {
		fprintf(stderr, "Invalid node id '%d'\n", node_id);
		exit(EXIT_USAGE);
	}

	addr_to_str(host, sizeof(host), sd_nodes[node_id].nid.addr, 0);

	sd_init_req((struct sd_req *)&req, SD_OP_KILL_NODE);

	ret = send_light_req((struct sd_req *)&req, host,
			     sd_nodes[node_id].nid.port);
	if (ret) {
		fprintf(stderr, "Failed to execute request\n");
		exit(EXIT_FAILURE);
	}

	return EXIT_SUCCESS;
}
Example #13
0
void compose_json_post_nat_src_host(json_t *obj, struct chained_cache *cc)
{
  char ip_address[INET6_ADDRSTRLEN];

  addr_to_str(ip_address, &cc->pnat->post_nat_src_ip);
  json_object_set_new_nocheck(obj, "post_nat_ip_src", json_string(ip_address));
}
Example #14
0
void compose_json_dst_net(json_t *obj, struct chained_cache *cc)
{
  char ip_address[INET6_ADDRSTRLEN];

  addr_to_str(ip_address, &cc->primitives.dst_net);
  json_object_set_new_nocheck(obj, "net_dst", json_string(ip_address));
}
Example #15
0
static void list_interfaces(void) {

    char pcap_err[PCAP_ERRBUF_SIZE];
    pcap_if_t *dev;
    u8 i = 0;

    /* There is a bug in several years' worth of libpcap releases that causes it
       to SEGV here if /sys/class/net is not readable. See http://goo.gl/nEnGx */

    if (access("/sys/class/net", R_OK | X_OK) && errno != ENOENT)
        printf("\n FATAL: This operation requires access to /sys/class/net/, sorry.");

    if (pcap_findalldevs(&dev, pcap_err) == -1)
        printf("\n FATAL: pcap_findalldevs: %s\n", pcap_err);

    if (!dev) printf("\n FATAL: Can't find any interfaces. Maybe you need to be root?");

    SAYF("\n-- Available interfaces --\n");

    do {

        pcap_addr_t *a = dev->addresses;

        SAYF("\n%3d: Name        : %s\n", i++, dev->name);
        SAYF("     Description : %s\n", dev->description ? dev->description : "-");

        /* Let's try to find something we can actually display. */

        while (a && a->addr->sa_family != PF_INET && a->addr->sa_family != PF_INET6)
            a = a->next;

        if (a) {

            if (a->addr->sa_family == PF_INET)
                SAYF("     IP address  : %s\n", addr_to_str(((u8*)a->addr) + 4, IP_VER4));
            else
                SAYF("     IP address  : %s\n", addr_to_str(((u8*)a->addr) + 8, IP_VER6));

        } else SAYF("     IP address  : (none)\n");

    } while ((dev = dev->next));

    SAYF("\n");

    pcap_freealldevs(dev);

}
Example #16
0
static int node_info(int argc, char **argv)
{
	int i, ret, success = 0;
	uint64_t total_size = 0, total_avail = 0, total_vdi_size = 0;
	char total_str[UINT64_DECIMAL_SIZE], avail_str[UINT64_DECIMAL_SIZE], vdi_size_str[UINT64_DECIMAL_SIZE];

	if (!raw_output)
		printf("Id\tSize\tUsed\tUse%%\n");

	for (i = 0; i < sd_nodes_nr; i++) {
		char host[128];
		struct sd_node_req req;
		struct sd_node_rsp *rsp = (struct sd_node_rsp *)&req;
		char store_str[UINT64_DECIMAL_SIZE], free_str[UINT64_DECIMAL_SIZE];

		addr_to_str(host, sizeof(host), sd_nodes[i].nid.addr, 0);

		sd_init_req((struct sd_req *)&req, SD_OP_STAT_SHEEP);
		req.epoch = sd_epoch;

		ret = send_light_req((struct sd_req *)&req, host,
				     sd_nodes[i].nid.port);

		size_to_str(rsp->store_size, store_str, sizeof(store_str));
		size_to_str(rsp->store_size - rsp->store_free, free_str,
			    sizeof(free_str));
		if (!ret) {
			printf(raw_output ? "%d %s %s %d%%\n" : "%2d\t%s\t%s\t%3d%%\n",
			       i, store_str, free_str,
			       rsp->store_size == 0 ? 0 :
			       (int)(((double)(rsp->store_size - rsp->store_free) / rsp->store_size) * 100));
			success++;
		}

		total_size += rsp->store_size;
		total_avail += rsp->store_free;
	}

	if (success == 0) {
		fprintf(stderr, "Cannot get information from any nodes\n");
		return EXIT_SYSFAIL;
	}

	if (parse_vdi(cal_total_vdi_size, SD_INODE_HEADER_SIZE,
			&total_vdi_size) < 0)
		return EXIT_SYSFAIL;

	size_to_str(total_size, total_str, sizeof(total_str));
	size_to_str(total_size - total_avail, avail_str, sizeof(avail_str));
	size_to_str(total_vdi_size, vdi_size_str, sizeof(vdi_size_str));
	printf(raw_output ? "Total %s %s %d%% %s\n"
			  : "Total\t%s\t%s\t%3d%%\n\nTotal virtual image size\t%s\n",
	       total_str, avail_str,
	       (int)(((double)(total_size - total_avail) / total_size) * 100),
	       vdi_size_str);

	return EXIT_SUCCESS;
}
Example #17
0
static int node_recovery(int argc, char **argv)
{
	int i, ret;

	if (!raw_output) {
		printf("Nodes In Recovery:\n");
		printf("  Id   Host:Port         V-Nodes       Zone\n");
	}

	for (i = 0; i < nr_nodes; i++) {
		char host[128];
		int fd;
		unsigned wlen, rlen;
		struct sd_node_req req;
		struct sd_node_rsp *rsp = (struct sd_node_rsp *)&req;

		addr_to_str(host, sizeof(host), node_list_entries[i].addr, 0);

		fd = connect_to(host, node_list_entries[i].port);
		if (fd < 0)
			return EXIT_FAILURE;

		memset(&req, 0, sizeof(req));

		req.opcode = SD_OP_STAT_RECOVERY;

		wlen = 0;
		rlen = 0;
		ret = exec_req(fd, (struct sd_req *)&req, NULL, &wlen, &rlen);
		close(fd);

		if (!ret && rsp->result == SD_RES_SUCCESS) {
			addr_to_str(host, sizeof(host),
					node_list_entries[i].addr, node_list_entries[i].port);
			printf(raw_output ? "%d %s %d %d\n" : "%4d   %-20s%5d%11d\n",
				   i, host, node_list_entries[i].nr_vnodes,
				   node_list_entries[i].zone);
		}
	}

	return EXIT_SUCCESS;
}
Example #18
0
void
respip_inform_print(struct respip_addr_info* respip_addr, uint8_t* qname,
	uint16_t qtype, uint16_t qclass, struct local_rrset* local_alias,
	struct comm_reply* repinfo)
{
	char srcip[128], respip[128], txt[512];
	unsigned port;

	if(local_alias)
		qname = local_alias->rrset->rk.dname;
	port = (unsigned)((repinfo->addr.ss_family == AF_INET) ?
		ntohs(((struct sockaddr_in*)&repinfo->addr)->sin_port) :
		ntohs(((struct sockaddr_in6*)&repinfo->addr)->sin6_port));
	addr_to_str(&repinfo->addr, repinfo->addrlen, srcip, sizeof(srcip));
	addr_to_str(&respip_addr->addr, respip_addr->addrlen,
		respip, sizeof(respip));
	snprintf(txt, sizeof(txt), "%s/%d inform %s@%u", respip,
		respip_addr->net, srcip, port);
	log_nametypeclass(0, txt, qname, qtype, qclass);
}
Example #19
0
void bmp_process_msg_route_monitor(char **bmp_packet, u_int32_t *len, struct bmp_peer *bmpp)
{
  struct bgp_misc_structs *bms;
  struct bgp_peer *peer, *bmpp_bgp_peer;
  struct bmp_data bdata;
  struct bmp_peer_hdr *bph;
  char tstamp_str[SRVBUFLEN], peer_ip[INET6_ADDRSTRLEN];
  int bgp_update_len;
  void *ret;

  if (!bmpp) return;

  peer = &bmpp->self;
  bms = bgp_select_misc_db(peer->type);

  if (!bms) return;

  if (!(bph = (struct bmp_peer_hdr *) bmp_get_and_check_length(bmp_packet, len, sizeof(struct bmp_peer_hdr)))) {
    Log(LOG_INFO, "INFO ( %s/core/BMP ): [%s] [route] packet discarded: failed bmp_get_and_check_length() BMP peer hdr\n",
        config.name, peer->addr_str);
    return;
  }

  bmp_peer_hdr_get_family(bph, &bdata.family);
  bmp_peer_hdr_get_peer_ip(bph, &bdata.peer_ip, bdata.family);
  bmp_peer_hdr_get_bgp_id(bph, &bdata.bgp_id);
  bmp_peer_hdr_get_tstamp(bph, &bdata.tstamp);
  bmp_peer_hdr_get_peer_asn(bph, &bdata.peer_asn);
  bmp_peer_hdr_get_peer_type(bph, &bdata.peer_type);

  if (bdata.family) {
    /* If no timestamp in BMP then let's generate one */
    if (!bdata.tstamp.tv_sec) gettimeofday(&bdata.tstamp, NULL);

    compose_timestamp(tstamp_str, SRVBUFLEN, &bdata.tstamp, TRUE, config.timestamps_since_epoch);
    addr_to_str(peer_ip, &bdata.peer_ip);

    ret = pm_tfind(&bdata.peer_ip, &bmpp->bgp_peers, bmp_bmpp_bgp_peer_host_addr_cmp);

    if (ret) {
      char peer_str[] = "peer_ip", *saved_peer_str = bms->peer_str;

      bmpp_bgp_peer = (*(struct bgp_peer **) ret);

      bms->peer_str = peer_str;
      bgp_update_len = bgp_parse_update_msg(bmpp_bgp_peer, (*bmp_packet)); 
      bms->peer_str = saved_peer_str;

      bmp_get_and_check_length(bmp_packet, len, bgp_update_len);
    }
  }
}
Example #20
0
static void print_nodes(const struct epoch_log *logs, uint16_t flags)
{
	int i, nr_disk;
	const struct sd_node *entry;

	for (i = 0; i < logs->nr_nodes; i++) {
		entry = logs->nodes + i;
		if (flags & SD_CLUSTER_FLAG_DISKMODE) {
			for (nr_disk = 0; nr_disk < DISK_MAX; nr_disk++) {
				if (entry->disks[nr_disk].disk_id == 0)
					break;
			}
			printf("%s%s(%d)",
			       (i == 0) ? "" : ", ",
			       addr_to_str(entry->nid.addr, entry->nid.port),
			       nr_disk);
		} else
			printf("%s%s",
			       (i == 0) ? "" : ", ",
			       addr_to_str(entry->nid.addr, entry->nid.port));
	}
}
Example #21
0
void start_observation(char* keyword, u8 field_cnt, u8 to_srv,
                       struct packet_flow* f) {

    if (obs_fields) printf("\n FATAL: Premature end of observation.");

    if (!daemon_mode) {

        SAYF(".-[ %s/%u -> ", addr_to_str(f->client->addr, f->client->ip_ver),
             f->cli_port);
        SAYF("%s/%u (%s) ]-\n|\n", addr_to_str(f->server->addr, f->client->ip_ver),
             f->srv_port, keyword);

        SAYF("| %-8s = %s/%u\n", to_srv ? "client" : "server",
             addr_to_str(to_srv ? f->client->addr :
                         f->server->addr, f->client->ip_ver),
             to_srv ? f->cli_port : f->srv_port);

    }

    if (log_file) {

        u8 tmp[64];

        time_t ut = get_unix_time();
        struct tm* lt = localtime(&ut);

        strftime((char*)tmp, 64, "%Y/%m/%d %H:%M:%S", lt);

        LOGF("[%s] mod=%s|cli=%s/%u|",tmp, keyword, addr_to_str(f->client->addr,
                f->client->ip_ver), f->cli_port);

        LOGF("srv=%s/%u|subj=%s", addr_to_str(f->server->addr, f->server->ip_ver),
             f->srv_port, to_srv ? "cli" : "srv");

    }

    obs_fields = field_cnt;

}
Example #22
0
/** print log information for an inform zone query */
static void
lz_inform_print(struct local_zone* z, struct query_info* qinfo,
	struct comm_reply* repinfo)
{
	char ip[128], txt[512];
	char zname[LDNS_MAX_DOMAINLEN+1];
	uint16_t port = ntohs(((struct sockaddr_in*)&repinfo->addr)->sin_port);
	dname_str(z->name, zname);
	addr_to_str(&repinfo->addr, repinfo->addrlen, ip, sizeof(ip));
	snprintf(txt, sizeof(txt), "%s inform %s@%u", zname, ip,
		(unsigned)port);
	log_nametypeclass(0, txt, qinfo->qname, qinfo->qtype, qinfo->qclass);
}
Example #23
0
static int node_recovery(int argc, char **argv)
{
	int i, ret;

	if (node_cmd_data.recovery_progress)
		return node_recovery_progress();

	if (!raw_output) {
		printf("Nodes In Recovery:\n");
		printf("  Id   Host:Port         V-Nodes       Zone"
		       "       Progress\n");
	}

	for (i = 0; i < sd_nodes_nr; i++) {
		struct sd_req req;
		struct sd_rsp *rsp = (struct sd_rsp *)&req;
		struct recovery_state state;

		memset(&state, 0, sizeof(state));

		sd_init_req(&req, SD_OP_STAT_RECOVERY);
		req.data_length = sizeof(state);

		ret = dog_exec_req(sd_nodes[i].nid.addr,
				      sd_nodes[i].nid.port, &req, &state);
		if (ret < 0)
			return EXIT_SYSFAIL;
		if (rsp->result != SD_RES_SUCCESS) {
			sd_err("%s", sd_strerror(rsp->result));
			return EXIT_FAILURE;
		}

		if (state.in_recovery) {
			const char *host = addr_to_str(sd_nodes[i].nid.addr,
						       sd_nodes[i].nid.port);
			if (raw_output)
				printf("%d %s %d %d %"PRIu64" %"PRIu64"\n", i,
				       host, sd_nodes[i].nr_vnodes,
				       sd_nodes[i].zone, state.nr_finished,
				       state.nr_total);
			else
				printf("%4d   %-20s%5d%11d%11.1f%%\n", i, host,
				       sd_nodes[i].nr_vnodes, sd_nodes[i].zone,
				       100 * (float)state.nr_finished
				       / state.nr_total);
		}
	}

	return EXIT_SUCCESS;
}
Example #24
0
int main(int argc, const char *argv[])
{
	int packets_in_buf = 1024;
	const char *payload = (const char[32]){0};
	int payload_sz = 32;

	if (argc == 1) {
		FATAL("Usage: %s [target ip:port] [target ...]", argv[0]);
	}

	struct net_addr *target_addrs = calloc(argc-1, sizeof(struct net_addr));
	int thread_num = argc - 1;

	int t;
	for (t = 0; t < thread_num; t++) {
		const char *target_addr_str = argv[t+1];
		parse_addr(&target_addrs[t], target_addr_str);

		fprintf(stderr, "[*] Sending to %s, send buffer %i packets\n",
			addr_to_str(&target_addrs[t]), packets_in_buf);
	}

	struct state *array_of_states = calloc(thread_num, sizeof(struct state));

	for (t = 0; t < thread_num; t++) {
		struct state *state = &array_of_states[t];
		state->target_addr = &target_addrs[t];
		state->packets_in_buf = packets_in_buf;
		state->payload = payload;
		state->payload_sz = payload_sz;
		state->src_port = 11404;
		thread_spawn(thread_loop, state);
	}

	while (1) {
		struct timeval timeout =
			NSEC_TIMEVAL(MSEC_NSEC(1000UL));
		while (1) {
			int r = select(0, NULL, NULL, NULL, &timeout);
			if (r != 0) {
				continue;
			}
			if (TIMEVAL_NSEC(&timeout) == 0) {
				break;
			}
		}
		// pass
	}
	return 0;
}
Example #25
0
void log_template_header(struct template_cache_entry *tpl, struct packet_ptrs *pptrs, u_int16_t tpl_type, u_int32_t sid, u_int8_t version)
{
  struct host_addr a;
  u_char agent_addr[50];
  u_int16_t agent_port, count, size;

  sa_to_addr((struct sockaddr *)pptrs->f_agent, &a, &agent_port);
  addr_to_str(agent_addr, &a);

  Log(LOG_DEBUG, "DEBUG ( default/core ): NfV%u agent         : %s:%u\n", version, agent_addr, sid);
  Log(LOG_DEBUG, "DEBUG ( default/core ): NfV%u template type : %s\n", version, ( tpl->template_type == 0 || tpl->template_type == 2 ) ? "flow" : "options");
  Log(LOG_DEBUG, "DEBUG ( default/core ): NfV%u template ID   : %u\n", version, ntohs(tpl->template_id));
  Log(LOG_DEBUG, "DEBUG ( default/core ): -----------------------------------------------------\n");
  Log(LOG_DEBUG, "DEBUG ( default/core ): |    pen     |     field type     | offset |  size  |\n");
}
Example #26
0
/** get status of a mesh state */
static void
get_mesh_status(struct mesh_area* mesh, struct mesh_state* m, 
	char* buf, size_t len)
{
	enum module_ext_state s = m->s.ext_state[m->s.curmod];
	const char *modname = mesh->mods.mod[m->s.curmod]->name;
	size_t l;
	if(strcmp(modname, "iterator") == 0 && s == module_wait_reply &&
		m->s.minfo[m->s.curmod]) {
		/* break into iterator to find out who its waiting for */
		struct iter_qstate* qstate = (struct iter_qstate*)
			m->s.minfo[m->s.curmod];
		struct outbound_list* ol = &qstate->outlist;
		struct outbound_entry* e;
		snprintf(buf, len, "%s wait for", modname);
		l = strlen(buf);
		buf += l; len -= l;
		if(ol->first == NULL)
			snprintf(buf, len, " (empty_list)");
		for(e = ol->first; e; e = e->next) {
			snprintf(buf, len, " ");
			l = strlen(buf);
			buf += l; len -= l;
			addr_to_str(&e->qsent->addr, e->qsent->addrlen, 
				buf, len);
			l = strlen(buf);
			buf += l; len -= l;
		}
	} else if(s == module_wait_subquery) {
		/* look in subs from mesh state to see what */
		char nm[257];
		struct mesh_state_ref* sub;
		snprintf(buf, len, "%s wants", modname);
		l = strlen(buf);
		buf += l; len -= l;
		if(m->sub_set.count == 0)
			snprintf(buf, len, " (empty_list)");
		RBTREE_FOR(sub, struct mesh_state_ref*, &m->sub_set) {
			char* t = ldns_rr_type2str(sub->s->s.qinfo.qtype);
			char* c = ldns_rr_class2str(sub->s->s.qinfo.qclass);
			dname_str(sub->s->s.qinfo.qname, nm);
			snprintf(buf, len, " %s %s %s", t, c, nm);
			l = strlen(buf);
			buf += l; len -= l;
			free(t);
			free(c);
		}
	} else {
Example #27
0
static int node_list(int argc, char **argv)
{
	int i;

	if (!raw_output)
		printf("  Id   Host:Port         V-Nodes       Zone     My-Vnodes\n");
	for (i = 0; i < sd_nodes_nr; i++) {
		const char *host = addr_to_str(sd_nodes[i].nid.addr,
					       sd_nodes[i].nid.port);

		printf(raw_output ? "%d %s %d %u %d\n" : "%4d   %-20s\t%2d%11u\t%2d\n",
		       i, host, sd_nodes[i].nr_vnodes, sd_nodes[i].zone, sd_nodes[i].my_nr_vnodes);
	}

	return EXIT_SUCCESS;
}
Example #28
0
static int get_vdi_bitmap_from(struct sd_node *node)
{
	struct sd_req hdr;
	struct sd_rsp *rsp = (struct sd_rsp *)&hdr;
	static DECLARE_BITMAP(tmp_vdi_inuse, SD_NR_VDIS);
	int fd, i, ret = SD_RES_SUCCESS;
	unsigned int rlen, wlen;
	char host[128];

	if (is_myself(node->addr, node->port))
		goto out;

	addr_to_str(host, sizeof(host), node->addr, 0);

	fd = connect_to(host, node->port);
	if (fd < 0) {
		vprintf(SDOG_ERR, "unable to get the VDI bitmap from %s: %m\n", host);
		ret = -SD_RES_EIO;
		goto out;
	}

	vprintf(SDOG_ERR, "%s:%d\n", host, node->port);

	memset(&hdr, 0, sizeof(hdr));
	hdr.opcode = SD_OP_READ_VDIS;
	hdr.epoch = sys->epoch;
	hdr.data_length = sizeof(tmp_vdi_inuse);
	rlen = hdr.data_length;
	wlen = 0;

	ret = exec_req(fd, &hdr, (char *)tmp_vdi_inuse,
			&wlen, &rlen);

	close(fd);

	if (ret || rsp->result != SD_RES_SUCCESS) {
		vprintf(SDOG_ERR, "unable to get the VDI bitmap (%d, %d)\n", ret,
				rsp->result);
		goto out;
	}

	for (i = 0; i < ARRAY_SIZE(sys->vdi_inuse); i++)
		sys->vdi_inuse[i] |= tmp_vdi_inuse[i];
out:
	return ret;
}
Example #29
0
static void parse_objs(uint64_t oid, obj_parser_func_t func, void *data, unsigned size)
{
	char name[128];
	int i, fd, ret, cb_ret;
	char *buf;

	buf = zalloc(size);
	if (!buf) {
		fprintf(stderr, "Failed to allocate memory\n");
		return;
	}

	for (i = 0; i < sd_nodes_nr; i++) {
		unsigned wlen = 0, rlen = size;
		struct sd_req hdr;
		struct sd_rsp *rsp = (struct sd_rsp *)&hdr;

		addr_to_str(name, sizeof(name), sd_nodes[i].nid.addr, 0);

		fd = connect_to(name, sd_nodes[i].nid.port);
		if (fd < 0)
			break;

		sd_init_req(&hdr, SD_OP_READ_PEER);
		hdr.data_length = rlen;
		hdr.flags = 0;
		hdr.epoch = sd_epoch;

		hdr.obj.oid = oid;

		ret = exec_req(fd, &hdr, buf, &wlen, &rlen);
		close(fd);

		sprintf(name + strlen(name), ":%d", sd_nodes[i].nid.port);

		if (ret)
			fprintf(stderr, "Failed to connect to %s\n", name);
		else {
			cb_ret = func(name, oid, rsp, buf, data);
			if (cb_ret)
				break;
		}
	}

	free(buf);
}
Example #30
0
int sd_read_object(uint64_t oid, void *data, unsigned int datalen,
		   uint64_t offset)
{
	struct sd_obj_req hdr;
	struct sd_obj_rsp *rsp = (struct sd_obj_rsp *)&hdr;
	char name[128];
	int n, fd, ret;
	unsigned wlen = 0, rlen = datalen;

	n = obj_to_sheep(vnode_list_entries, nr_vnodes, oid, 0);

	addr_to_str(name, sizeof(name), vnode_list_entries[n].addr, 0);

	fd = connect_to(name, vnode_list_entries[n].port);
	if (fd < 0) {
		fprintf(stderr, "failed to connect %s:%d\n", name,
			vnode_list_entries[n].port);
		return SD_RES_EIO;
	}

	memset(&hdr, 0, sizeof(hdr));
	hdr.epoch = node_list_version;
	hdr.opcode = SD_OP_READ_OBJ;
	hdr.oid = oid;
	/* use direct to avoid checking consistency */
	hdr.flags =  SD_FLAG_CMD_DIRECT;
	hdr.data_length = rlen;
	hdr.offset = offset;

	ret = exec_req(fd, (struct sd_req *)&hdr, data, &wlen, &rlen);
	close(fd);

	if (ret) {
		fprintf(stderr, "failed to read object, %lx\n", oid);
		return SD_RES_EIO;
	}

	if (rsp->result != SD_RES_SUCCESS) {
		fprintf(stderr, "failed to read object, %lx %s\n", oid,
			sd_strerror(rsp->result));
		return rsp->result;
	}

	return SD_RES_SUCCESS;
}