libimobiledevice 1.3.0

Macros | Typedefs | Enumerations | Functions
file_relay.h File Reference

Retrieve compressed CPIO archives. More...

## Macros
#define | FILE_RELAY_SERVICE_NAME "com.apple.mobile.file_relay"

## Typedefs
typedef struct file_relay_client_private | file_relay_client_private
typedef file_relay_client_private * | file_relay_client_t
| The client handle.

## Enumerations
enum | file_relay_error_t { FILE_RELAY_E_SUCCESS = 0, FILE_RELAY_E_INVALID_ARG = -1, FILE_RELAY_E_PLIST_ERROR = -2, FILE_RELAY_E_MUX_ERROR = -3, FILE_RELAY_E_INVALID_SOURCE = -4, FILE_RELAY_E_STAGING_EMPTY = -5, FILE_RELAY_E_PERMISSION_DENIED = -6, FILE_RELAY_E_UNKNOWN_ERROR = -256 }
| Error Codes.

## Functions
file_relay_error_t | file_relay_client_new (idevice_t device, lockdownd_service_descriptor_t service, file_relay_client_t *client)
| Connects to the file_relay service on the specified device. More...
file_relay_error_t | file_relay_client_start_service (idevice_t device, file_relay_client_t *client, const char *label)
| Starts a new file_relay service on the specified device and connects to it. More...
file_relay_error_t | file_relay_client_free (file_relay_client_t client)
| Disconnects a file_relay client from the device and frees up the file_relay client data. More...
file_relay_error_t | file_relay_request_sources (file_relay_client_t client, const char **sources, idevice_connection_t *connection)
| Request data for the given sources. More...
file_relay_error_t | file_relay_request_sources_timeout (file_relay_client_t client, const char **sources, idevice_connection_t *connection, unsigned int timeout)
| Request data for the given sources. More...

## Detailed Description

Retrieve compressed CPIO archives.

## Function Documentation

## ◆ file_relay_client_free()

file_relay_error_t file_relay_client_free | ( | file_relay_client_t | client | ) |

Disconnects a file_relay client from the device and frees up the file_relay client data.

Parameters

  client | The file_relay client to disconnect and free.

Returns
  FILE_RELAY_E_SUCCESS on success, FILE_RELAY_E_INVALID_ARG when one of client or client->parent is invalid, or FILE_RELAY_E_UNKNOWN_ERROR when the was an error freeing the parent property_list_service client.

## ◆ file_relay_client_new()

file_relay_error_t file_relay_client_new | ( | idevice_t | device,
|  | lockdownd_service_descriptor_t | service,
|  | file_relay_client_t * | client
| ) |  |

Connects to the file_relay service on the specified device.

Parameters

  device | The device to connect to.
  service | The service descriptor returned by lockdownd_start_service.
  client | Reference that will point to a newly allocated file_relay_client_t upon successful return.

Returns
  FILE_RELAY_E_SUCCESS on success, FILE_RELAY_E_INVALID_ARG when one of the parameters is invalid, or FILE_RELAY_E_MUX_ERROR when the connection failed.

## ◆ file_relay_client_start_service()

file_relay_error_t file_relay_client_start_service | ( | idevice_t | device,
|  | file_relay_client_t * | client,
|  | const char * | label
| ) |  |

Starts a new file_relay service on the specified device and connects to it.

Parameters

  device | The device to connect to.
  client | Pointer that will point to a newly allocated file_relay_client_t upon successful return. Must be freed using file_relay_client_free() after use.
  label | The label to use for communication. Usually the program name. Pass NULL to disable sending the label in requests to lockdownd.

Returns
  FILE_RELAY_E_SUCCESS on success, or an FILE_RELAY_E_* error code otherwise.

## ◆ file_relay_request_sources()

file_relay_error_t file_relay_request_sources | ( | file_relay_client_t | client,
|  | const char ** | sources,
|  | idevice_connection_t * | connection
| ) |  |

Request data for the given sources.

Parameters

  client | The connected file_relay client.
  sources | A NULL-terminated list of sources to retrieve. Valid sources are: AppleSupport Network VPN WiFi UserDatabases CrashReporter tmp SystemConfiguration
  connection | The connection that has to be used for receiving the data using idevice_connection_receive(). The connection will be closed automatically by the device, but use file_relay_client_free() to clean up properly.
  timeout | Maximum time in milliseconds to wait for data.

Note
  WARNING: Don't call this function without reading the data afterwards. A directory mobile_file_relay.XXXX used for creating the archive will remain in the /tmp directory otherwise.

Returns
  FILE_RELAY_E_SUCCESS on succes, FILE_RELAY_E_INVALID_ARG when one or more parameters are invalid, FILE_RELAY_E_MUX_ERROR if a communication error occurs, FILE_RELAY_E_PLIST_ERROR when the received result is NULL or is not a valid plist, FILE_RELAY_E_INVALID_SOURCE if one or more sources are invalid, FILE_RELAY_E_STAGING_EMPTY if no data is available for the given sources, or FILE_RELAY_E_UNKNOWN_ERROR otherwise.

## ◆ file_relay_request_sources_timeout()

file_relay_error_t file_relay_request_sources_timeout | ( | file_relay_client_t | client,
|  | const char ** | sources,
|  | idevice_connection_t * | connection,
|  | unsigned int | timeout
| ) |  |

Request data for the given sources.

Calls file_relay_request_sources_timeout() with a timeout of 60000 milliseconds (60 seconds).

Parameters

  client | The connected file_relay client.
  sources | A NULL-terminated list of sources to retrieve. Valid sources are: AppleSupport Network VPN WiFi UserDatabases CrashReporter tmp SystemConfiguration
  connection | The connection that has to be used for receiving the data using idevice_connection_receive(). The connection will be closed automatically by the device, but use file_relay_client_free() to clean up properly.

Note
  WARNING: Don't call this function without reading the data afterwards. A directory mobile_file_relay.XXXX used for creating the archive will remain in the /tmp directory otherwise.

Returns
  FILE_RELAY_E_SUCCESS on succes, FILE_RELAY_E_INVALID_ARG when one or more parameters are invalid, FILE_RELAY_E_MUX_ERROR if a communication error occurs, FILE_RELAY_E_PLIST_ERROR when the received result is NULL or is not a valid plist, FILE_RELAY_E_INVALID_SOURCE if one or more sources are invalid, FILE_RELAY_E_STAGING_EMPTY if no data is available for the given sources, or FILE_RELAY_E_UNKNOWN_ERROR otherwise.