Method: Capp#datalinks

Defined in:
ext/capp/capp.c

Returns the supported datalinks for this capture instance:

p Capp.live.datalinks
#=> ["EN10MB", "PPI", "IEEE802_11_RADIO", "IEEE802_11",
     "IEEE802_11_RADIO_AVS", "RAW"]

These can be used to change the datalink used to capture packets by using #datalink=



435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
# File 'ext/capp/capp.c', line 435

static VALUE
capp_datalinks(VALUE self)
{
    int *dlt_buf;
    pcap_t *handle;
    VALUE datalink_ary;
    int i, datalink_count;

    GetCapp(self, handle);

    datalink_count = pcap_list_datalinks(handle, &dlt_buf);

    if (datalink_count == -1)
	rb_raise(eCappError, "%s", pcap_geterr(handle));

    datalink_ary = rb_ary_new2(datalink_count);

    for (i = 0; i < datalink_count; i++) {
	const char *datalink_name_cstr = pcap_datalink_val_to_name(dlt_buf[i]);
	VALUE datalink_name = rb_usascii_str_new_cstr(datalink_name_cstr);

	rb_ary_push(datalink_ary, datalink_name);
    }

    pcap_free_datalinks(dlt_buf);

    return datalink_ary;
}