Esempio n. 1
1
static void
show_tstamp_types_and_exit(const char *device, pcap_t *pd)
{
	int n_tstamp_types;
	int *tstamp_types = 0;
	const char *tstamp_type_name;
	int i;

	n_tstamp_types = pcap_list_tstamp_types(pd, &tstamp_types);
	if (n_tstamp_types < 0)
		error("%s", pcap_geterr(pd));

	if (n_tstamp_types == 0) {
		fprintf(stderr, "Time stamp type cannot be set for %s\n",
		    device);
		exit(0);
	}
	fprintf(stderr, "Time stamp types for %s (use option -j to set):\n",
	    device);
	for (i = 0; i < n_tstamp_types; i++) {
		tstamp_type_name = pcap_tstamp_type_val_to_name(tstamp_types[i]);
		if (tstamp_type_name != NULL) {
			(void) fprintf(stderr, "  %s (%s)\n", tstamp_type_name,
			    pcap_tstamp_type_val_to_description(tstamp_types[i]));
		} else {
			(void) fprintf(stderr, "  %d\n", tstamp_types[i]);
		}
	}
	pcap_free_tstamp_types(tstamp_types);
	exit(0);
}
Esempio n. 2
0
static void print_timestamp_types(const char *dev) {
    int i, ntstypes;
    char junk[PCAP_ERRBUF_SIZE];
    int *tstypes;
    pcap_t *handle;

    handle = pcap_create(dev, junk);
    if(!handle)
        return;

    ntstypes = pcap_list_tstamp_types(handle, &tstypes);
    if(ntstypes > 0)
        printf("     Timestamp types:%s", options.verbose > 1 ? "\n" : " ");
    if(options.verbose > 1)
        for(i = 0; i < ntstypes; ++i)
            printf("       %-20s %s\n", pcap_tstamp_type_val_to_name(tstypes[i]),
                   pcap_tstamp_type_val_to_description(tstypes[i]));
    else
        for(i = 0; i < ntstypes; ++i)
            printf("%s%s", pcap_tstamp_type_val_to_name(tstypes[i])
                   , i + 1 > ntstypes ? ", " : "\n");

    pcap_free_tstamp_types(tstypes);
    pcap_close(handle);
}
Esempio n. 3
0
inline std::vector<timestamp_t> get_timestamp_types(pcap_t *source) {
  int *timestamp_t_types = nullptr;
  const auto num_timestamp_t_types =
      pcap_list_tstamp_types(source, &timestamp_t_types);
  std::vector<timestamp_t> timestamp_ts;
  for (auto k = 0; k < num_timestamp_t_types; ++k) {
    timestamp_ts.push_back(static_cast<timestamp_t>(timestamp_t_types[k]));
  }
  pcap_free_tstamp_types(timestamp_t_types);
  if (num_timestamp_t_types == PCAP_ERROR) {
    throw error{"pcap_list_tstamp_types error\n" + error_string(source)};
  }
  return timestamp_ts;
}
Esempio n. 4
0
/*
 * Class:     disy_jnipcap_Pcap
 * Method:    listTstampTypes
 * Signature: (JLjava/util/ArrayList;)I
 */
JNIEXPORT jint JNICALL
Java_disy_jnipcap_Pcap_listTstampTypes (JNIEnv *env, jclass jcls, jlong jptr, jobject jtypes)
{
	pcap_t *p = (pcap_t *) jptr;
	if (p == NULL) return -1;
	int *carr;
	int ret = pcap_list_tstamp_types (p, &carr);
	if (ret >= 0) {
		int i = 0;
		for (;i<ret;i++) {
			jobject ji = NewInteger(env,carr[i]);
			(*env)->CallBooleanMethod (env, jtypes, mid_ArrayList_add_object, ji);
		}
	}
	pcap_free_tstamp_types(carr);
	return ret;
}