libimobiledevice  1.2.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. More...
 

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.

Typedef Documentation

typedef file_relay_client_private* file_relay_client_t

The client handle.

Function Documentation

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
clientThe 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_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
deviceThe device to connect to.
serviceThe service descriptor returned by lockdownd_start_service.
clientReference 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_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
deviceThe device to connect to.
clientPointer that will point to a newly allocated file_relay_client_t upon successful return. Must be freed using file_relay_client_free() after use.
labelThe 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_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
clientThe connected file_relay client.
sourcesA NULL-terminated list of sources to retrieve. Valid sources are:
  • AppleSupport
  • Network
  • VPN
  • WiFi
  • UserDatabases
  • CrashReporter
  • tmp
  • SystemConfiguration
connectionThe 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.
timeoutMaximum 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_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
clientThe connected file_relay client.
sourcesA NULL-terminated list of sources to retrieve. Valid sources are:
  • AppleSupport
  • Network
  • VPN
  • WiFi
  • UserDatabases
  • CrashReporter
  • tmp
  • SystemConfiguration
connectionThe 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.