| Wireshark 4.7.0 The Wireshark network protocol analyzer

Loading...
Searching...
No Matches
Typedefs | Functions
capture_sync.h File Reference
`#include <wsutil/processes.h>`

Go to the source code of this file.

## Typedefs
typedef struct _capture_session | capture_session
typedef struct capture_options_tag | capture_options

## Functions
bool | sync_pipe_start (capture_options *capture_opts, GPtrArray *capture_comments, capture_session *cap_session, struct _info_data *cap_data, void(*update_cb)(void))
void | sync_pipe_stop (capture_session *cap_session)
void | sync_pipe_kill (ws_process_id fork_child)
int | sync_interface_set_80211_chan (const char *app_name, const char *iface, const char *freq, const char *type, const char *center_freq1, const char *center_freq2, char **data, char **primary_msg, char **secondary_msg, void(*update_cb)(void))
int | sync_if_bpf_filter_open (const char *app_name, const char *ifname, const char *filter, int linktype, bool optimize, char **data, char **primary_msg, char **secondary_msg, void(*update_cb)(void))
int | sync_interface_list_open (const char *app_name, char **data, char **primary_msg, char **secondary_msg, void(*update_cb)(void))
int | sync_if_capabilities_open (const char *app_name, const char *ifname, bool monitor_mode, const char *auth, char **data, char **primary_msg, char **secondary_msg, void(*update_cb)(void))
int | sync_if_list_capabilities_open (const char *app_name, GList *ifqueries, char **data, char **primary_msg, char **secondary_msg, void(*update_cb)(void))
int | sync_interface_stats_open (const char *app_name, int *read_fd, ws_process_id *fork_child, char **data, char **msg, void(*update_cb)(void))
int | sync_interface_stats_close (int *read_fd, ws_process_id *fork_child, char **msg)
int | sync_pipe_gets_nonblock (int pipe_fd, char *bytes, int max)
void | capture_sync_set_fetch_dumpcap_pid_cb (void(*cb)(ws_process_id pid))

## Detailed Description

Sync mode capture (internal interface).

Will start a new Wireshark child instance which will do the actual capture work.

## Function Documentation

## ◆ sync_if_bpf_filter_open()

int sync_if_bpf_filter_open | ( | const char * | app_name,
|  | const char * | ifname,
|  | const char * | filter,
|  | int | linktype,
|  | bool | optimize,
|  | char ** | data,
|  | char ** | primary_msg,
|  | char ** | secondary_msg,
|  | void(*)(void) | update_cb
| ) |  |
| extern

Compile a capture filter and get its BPF bytecode (in human-readable form.) This is necessary on Linux because, as pcap_compile(3PCAP) says: "On Linux, if the pcap_t handle corresponds to a live packet capture, the resulting filter program may use Linux BPF extensions;" this will produce the actual filter used for a live capture as opposed to the compiled version without extensions that pcap_open_dead(3PCAP) produces. (However, it requires permissions to open the device.)

Parameters

  app_name | Application name
  ifname | network interface name
  filter | capture filter string
  linktype | link layer type (-1 to use device default)
  optimize | whether to optimize the filter
  data | On success, *data points to a buffer containing the dumpcap output, On failure *data is NULL
  primary_msg | On success NULL, On failure points to an error message
  secondary_msg | On success NULL, On failure either points to an additional error message or is NULL
  update_cb | update callback

## ◆ sync_if_capabilities_open()

int sync_if_capabilities_open | ( | const char * | app_name,
|  | const char * | ifname,
|  | bool | monitor_mode,
|  | const char * | auth,
|  | char ** | data,
|  | char ** | primary_msg,
|  | char ** | secondary_msg,
|  | void(*)(void) | update_cb
| ) |  |
| extern

Get interface capabilities using dumpcap

## ◆ sync_interface_list_open()

int sync_interface_list_open | ( | const char * | app_name,
|  | char ** | data,
|  | char ** | primary_msg,
|  | char ** | secondary_msg,
|  | void(*)(void) | update_cb
| ) |  |
| extern

Get an interface list using dumpcap

## ◆ sync_interface_set_80211_chan()

int sync_interface_set_80211_chan | ( | const char * | app_name,
|  | const char * | iface,
|  | const char * | freq,
|  | const char * | type,
|  | const char * | center_freq1,
|  | const char * | center_freq2,
|  | char ** | data,
|  | char ** | primary_msg,
|  | char ** | secondary_msg,
|  | void(*)(void) | update_cb
| ) |  |
| extern

Set wireless channel using dumpcap On success, *data points to a buffer containing the dumpcap output, *primary_msg and *secondary_msg are NULL, and 0 is returned. *data must be freed with g_free().

On failure, *data is NULL, *primary_msg points to an error message, *secondary_msg either points to an additional error message or is NULL, and -1 or errno value is returned; *primary_msg, and *secondary_msg if not NULL must be freed with g_free().

Parameters

  app_name | Application name
  iface | (monitor) network interface name
  freq | channel control frequency string (in MHz)
  type | channel type string (or NULL if not used)
  center_freq1 | VHT channel center frequency (or NULL if not used)
  center_freq2 | VHT channel center frequency 2 (or NULL if not used)
  data | On success, *data points to a buffer containing the dumpcap output, On failure *data is NULL
  primary_msg | On success NULL, On failure points to an error message
  secondary_msg | On success NULL, On failure either points to an additional error message or is NULL
  update_cb | update callback

Returns
  0 on success

## ◆ sync_interface_stats_close()

int sync_interface_stats_close | ( | int * | read_fd,
|  | ws_process_id * | fork_child,
|  | char ** | msg
| ) |  |
| extern

Stop gathering statistics.

## ◆ sync_interface_stats_open()

int sync_interface_stats_open | ( | const char * | app_name,
|  | int * | read_fd,
|  | ws_process_id * | fork_child,
|  | char ** | data,
|  | char ** | msg,
|  | void(*)(void) | update_cb
| ) |  |
| extern

Start getting interface statistics using dumpcap.

## ◆ sync_pipe_gets_nonblock()

int sync_pipe_gets_nonblock | ( | int | pipe_fd,
|  | char * | bytes,
|  | int | max
| ) |  |
| extern

Read a line from a pipe, similar to fgets. Non-blocking.

## ◆ sync_pipe_kill()

void sync_pipe_kill | ( | ws_process_id | fork_child | ) |
| extern

User wants to stop the program, just kill the child as soon as possible

## ◆ sync_pipe_start()

bool sync_pipe_start | ( | capture_options * | capture_opts,
|  | GPtrArray * | capture_comments,
|  | capture_session * | cap_session,
|  | struct _info_data * | cap_data,
|  | void(*)(void) | update_cb
| ) |  |
| extern

Start a new capture session. Create a capture child which is doing the real capture work. The various capture_input_... functions will be called, if something had happened.

Most of the parameters are passed through the global capture_opts.

Parameters

  capture_opts | the options
  capture_comments | if not NULL, a GPtrArray * to a set of comments to put in the capture file's Section Header Block if it's a pcapng file
  cap_session | a handle for the capture session
  cap_data | a struct with capture info data
  update_cb | update screen

Returns
  true if a capture could be started, false if not

## ◆ sync_pipe_stop()

void sync_pipe_stop | ( | capture_session * | cap_session | ) |
| extern

User wants to stop capturing, gracefully close the capture child