Fork Vasum on GitHub Official Vasum Wiki on Tizen.org
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
vasum-client.h
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2014 Samsung Electronics Co., Ltd All Rights Reserved
3  *
4  * Contact: Mateusz Malicki <m.malicki2@samsung.com>
5  *
6  * Licensed under the Apache License, Version 2.0 (the "License");
7  * you may not use this file except in compliance with the License.
8  * You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing, software
13  * distributed under the License is distributed on an "AS IS" BASIS,
14  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15  * See the License for the specific language governing permissions and
16  * limitations under the License
17  */
18 
19 
157 #ifndef VASUM_CLIENT_H
158 #define VASUM_CLIENT_H
159 
160 #include <stdint.h>
161 #include <sys/stat.h>
162 #include <netinet/ip.h>
163 #include <linux/if_link.h>
164 
165 #ifdef __cplusplus
166 extern "C"
167 {
168 #endif
169 
173 typedef void* VsmClient;
174 
180 typedef char* VsmString;
181 
187 typedef VsmString* VsmArrayString;
188 
189 typedef void *VsmAddrList;
193 typedef enum {
200 } VsmStatus;
201 
205 typedef unsigned int VsmSubscriptionId;
206 
210 typedef enum {
222 } VsmZoneState;
223 
227 typedef void* VsmZone;
228 
232 typedef enum {
236 } VsmNetdevType;
237 
241 typedef void* VsmNetdev;
242 
246 typedef enum {
250 } VsmFileType;
251 
255 typedef enum {
259 
270 VsmStatus vsm_get_poll_fd(VsmClient client, int* fd);
271 
285 VsmStatus vsm_enter_eventloop(VsmClient client, int flags, int timeout);
286 
294 VsmStatus vsm_set_dispatcher_type(VsmClient client, VsmDispacherType dispacher);
295 
303 VsmStatus vsm_get_dispatcher_type(VsmClient client, VsmDispacherType* dispacher);
304 
310 VsmClient vsm_client_create();
311 
317 void vsm_client_free(VsmClient client);
318 
325 VsmStatus vsm_get_status(VsmClient client);
326 
333 const char* vsm_get_status_message(VsmClient client);
334 
341 VsmStatus vsm_connect(VsmClient client);
342 
350 VsmStatus vsm_connect_custom(VsmClient client, const char* address);
351 
358 VsmStatus vsm_disconnect(VsmClient client);
359 
365 void vsm_array_string_free(VsmArrayString astring);
366 
372 void vsm_string_free(VsmString string);
373 
380 VsmString vsm_zone_get_id(VsmZone zone);
381 
388 int vsm_zone_get_terminal(VsmZone zone);
389 
396 VsmZoneState vsm_zone_get_state(VsmZone zone);
397 
404 VsmString vsm_zone_get_rootfs(VsmZone zone);
405 
411 void vsm_zone_free(VsmZone zone);
412 
419 VsmString vsm_netdev_get_name(VsmNetdev netdev);
420 
427 VsmNetdevType vsm_netdev_get_type(VsmNetdev netdev);
428 
434 void vsm_netdev_free(VsmNetdev netdev);
435 
443 typedef void (*VsmZoneDbusStateCallback)(const char* zoneId,
444  const char* address,
445  void* data);
446 
453 VsmStatus vsm_lock_queue(VsmClient client);
454 
461 VsmStatus vsm_unlock_queue(VsmClient client);
462 
473 VsmStatus vsm_get_zone_dbuses(VsmClient client, VsmArrayString* keys, VsmArrayString* values);
474 
483 VsmStatus vsm_get_zone_ids(VsmClient client, VsmArrayString* array);
484 
493 VsmStatus vsm_get_active_zone_id(VsmClient client, VsmString* id);
494 
504 VsmStatus vsm_lookup_zone_by_pid(VsmClient client, int pid, VsmString* id);
505 
515 VsmStatus vsm_lookup_zone_by_id(VsmClient client, const char* id, VsmZone* zone);
516 
526 VsmStatus vsm_lookup_zone_by_terminal_id(VsmClient client, int terminal, VsmString* id);
527 
535 VsmStatus vsm_set_active_zone(VsmClient client, const char* id);
536 
545 VsmStatus vsm_create_zone(VsmClient client, const char* id, const char* tname);
546 
555 VsmStatus vsm_destroy_zone(VsmClient client, const char* id, int force);
556 
564 VsmStatus vsm_shutdown_zone(VsmClient client, const char* id);
565 
573 VsmStatus vsm_start_zone(VsmClient client, const char* id);
574 
582 VsmStatus vsm_lock_zone(VsmClient client, const char* id);
583 
591 VsmStatus vsm_unlock_zone(VsmClient client, const char* id);
592 
605 VsmStatus vsm_add_state_callback(VsmClient client,
606  VsmZoneDbusStateCallback zoneDbusStateCallback,
607  void* data,
608  VsmSubscriptionId* subscriptionId);
609 
617 VsmStatus vsm_del_state_callback(VsmClient client, VsmSubscriptionId subscriptionId);
618 
628 VsmStatus vsm_grant_device(VsmClient client,
629  const char* zone,
630  const char* device,
631  uint32_t flags);
632 
641 VsmStatus vsm_revoke_device(VsmClient client, const char* zone, const char* device);
642 
652 VsmStatus vsm_zone_get_netdevs(VsmClient client, const char* zone, VsmArrayString* netdevIds);
653 
654 
665 VsmStatus vsm_netdev_get_ip_addr(VsmClient client,
666  const char* zone,
667  const char* netdevId,
668  VsmAddrList *addrs);
669 
675 void vsm_addrlist_free(VsmAddrList addrs);
676 
686 VsmStatus vsm_netdev_get_ipv4_addr(VsmClient client,
687  const char* zone,
688  const char* netdevId,
689  struct in_addr *addr);
690 
700 VsmStatus vsm_netdev_get_ipv6_addr(VsmClient client,
701  const char* zone,
702  const char* netdevId,
703  struct in6_addr *addr);
704 
715 VsmStatus vsm_netdev_add_ipv4_addr(VsmClient client,
716  const char* zone,
717  const char* netdevId,
718  struct in_addr *addr,
719  int prefix);
720 
731 VsmStatus vsm_netdev_add_ipv6_addr(VsmClient client,
732  const char* zone,
733  const char* netdevId,
734  struct in6_addr *addr,
735  int prefix);
736 
747 VsmStatus vsm_netdev_del_ipv4_addr(VsmClient client,
748  const char* zone,
749  const char* netdevId,
750  struct in_addr* addr,
751  int prefix);
752 
763 VsmStatus vsm_netdev_del_ipv6_addr(VsmClient client,
764  const char* zone,
765  const char* netdevId,
766  struct in6_addr* addr,
767  int prefix);
768 
777 VsmStatus vsm_netdev_up(VsmClient client,
778  const char* zone,
779  const char* netdevId);
780 
789 VsmStatus vsm_netdev_down(VsmClient client,
790  const char* zone,
791  const char* netdevId);
792 
793 
803 VsmStatus vsm_create_netdev_veth(VsmClient client,
804  const char* zone,
805  const char* zoneDev,
806  const char* hostDev);
819 VsmStatus vsm_create_netdev_macvlan(VsmClient client,
820  const char* zone,
821  const char* zoneDev,
822  const char* hostDev,
823  enum macvlan_mode mode);
832 VsmStatus vsm_create_netdev_phys(VsmClient client, const char* zone, const char* devId);
833 
844 VsmStatus vsm_lookup_netdev_by_name(VsmClient client,
845  const char* zone,
846  const char* netdevId,
847  VsmNetdev* netdev);
848 
857 VsmStatus vsm_destroy_netdev(VsmClient client, const char* zone, const char* devId);
858 
874 VsmStatus vsm_declare_file(VsmClient client,
875  const char* zone,
876  VsmFileType type,
877  const char* path,
878  int32_t flags,
879  mode_t mode);
880 
896 VsmStatus vsm_declare_mount(VsmClient client,
897  const char* source,
898  const char* zone,
899  const char* target,
900  const char* type,
901  uint64_t flags,
902  const char* data);
903 
916 VsmStatus vsm_declare_link(VsmClient client,
917  const char *source,
918  const char* zone,
919  const char *target);
920 
932 VsmStatus vsm_list_declarations(VsmClient client,
933  const char* zone,
934  VsmArrayString* declarations);
935 
946 VsmStatus vsm_remove_declaration(VsmClient client,
947  const char* zone,
948  VsmString declaration);
949 
956 VsmStatus vsm_clean_up_zones_root(VsmClient client);
957 
963 unsigned int vsm_addrlist_size(VsmAddrList addrs);
964 
970 int vsm_addrlist_get_type(VsmAddrList addrs, unsigned int i);
971 
978 const void *vsm_addrlist_get_addr(VsmAddrList addrs, unsigned int i);
979 
985 unsigned int vsm_addrlist_get_prefix(VsmAddrList addrs, unsigned int i);
986 
987 #ifdef __cplusplus
988 }
989 #endif
990 
991 #endif /* VASUM_CLIENT_H */
992 
VsmStatus vsm_get_zone_ids(VsmClient client, VsmArrayString *array)
Get zones name.
Definition: vasum-client.cpp:186
Definition: vasum-client.h:247
VsmStatus vsm_lookup_zone_by_terminal_id(VsmClient client, int terminal, VsmString *id)
Get zone name with given terminal.
Definition: vasum-client.cpp:207
VsmStatus vsm_netdev_del_ipv6_addr(VsmClient client, const char *zone, const char *netdevId, struct in6_addr *addr, int prefix)
Remove ipv6 address from netdev.
Definition: vasum-client.cpp:338
VsmStatus vsm_lookup_zone_by_pid(VsmClient client, int pid, VsmString *id)
Get zone name of process with given pid.
Definition: vasum-client.cpp:196
VsmStatus vsm_netdev_add_ipv6_addr(VsmClient client, const char *zone, const char *netdevId, struct in6_addr *addr, int prefix)
Add ipv6 address for given netdevId.
Definition: vasum-client.cpp:320
VsmStatus vsm_lookup_netdev_by_name(VsmClient client, const char *zone, const char *netdevId, VsmNetdev *netdev)
Get netdev informations.
Definition: vasum-client.cpp:383
Definition: vasum-client.h:216
VsmStatus vsm_netdev_down(VsmClient client, const char *zone, const char *netdevId)
Turn down a network device in the zone.
Definition: vasum-client.cpp:354
void * VsmClient
vasum-server's opaque client pointer.
Definition: vasum-client.h:173
VsmStatus vsm_get_zone_dbuses(VsmClient client, VsmArrayString *keys, VsmArrayString *values)
Get dbus address of each zone.
Definition: vasum-client.cpp:181
VsmStatus vsm_clean_up_zones_root(VsmClient client)
Clean up zones root directory.
Definition: vasum-client.cpp:441
VsmStatus vsm_revoke_device(VsmClient client, const char *zone, const char *device)
Revoke access to device.
Definition: vasum-client.cpp:268
void vsm_zone_free(VsmZone zone)
Release VsmZone.
Definition: vasum-client.cpp:137
VsmStatus vsm_lock_zone(VsmClient client, const char *id)
Lock zone.
Definition: vasum-client.cpp:237
VsmStatus vsm_create_zone(VsmClient client, const char *id, const char *tname)
Create and add zone.
Definition: vasum-client.cpp:217
Definition: vasum-client.h:233
VsmStatus vsm_add_state_callback(VsmClient client, VsmZoneDbusStateCallback zoneDbusStateCallback, void *data, VsmSubscriptionId *subscriptionId)
Register dbus state change callback function.
Definition: vasum-client.cpp:247
VsmStatus vsm_create_netdev_phys(VsmClient client, const char *zone, const char *devId)
Create/move phys netdev in/to zone.
Definition: vasum-client.cpp:378
VsmStatus vsm_start_zone(VsmClient client, const char *id)
Start zone.
Definition: vasum-client.cpp:232
VsmStatus vsm_declare_link(VsmClient client, const char *source, const char *zone, const char *target)
Create link in zone.
Definition: vasum-client.cpp:419
VsmStatus vsm_create_netdev_veth(VsmClient client, const char *zone, const char *zoneDev, const char *hostDev)
Create veth netdev in zone.
Definition: vasum-client.cpp:361
Definition: vasum-client.h:212
void * VsmNetdev
Network device information.
Definition: vasum-client.h:241
VsmStatus vsm_unlock_zone(VsmClient client, const char *id)
Unlock zone.
Definition: vasum-client.cpp:242
Definition: vasum-client.h:234
Invalid argument.
Definition: vasum-client.h:197
VsmStatus vsm_declare_file(VsmClient client, const char *zone, VsmFileType type, const char *path, int32_t flags, mode_t mode)
Create file, directory or pipe in zone.
Definition: vasum-client.cpp:397
void * VsmAddrList
Definition: vasum-client.h:189
VsmStatus vsm_shutdown_zone(VsmClient client, const char *id)
Shutdown zone.
Definition: vasum-client.cpp:227
VsmStatus vsm_get_dispatcher_type(VsmClient client, VsmDispacherType *dispacher)
Get dispatching method.
Definition: vasum-client.cpp:71
VsmStatus vsm_set_active_zone(VsmClient client, const char *id)
Set active (foreground) zone.
Definition: vasum-client.cpp:212
VsmStatus vsm_set_dispatcher_type(VsmClient client, VsmDispacherType dispacher)
Set dispatching method.
Definition: vasum-client.cpp:66
void vsm_addrlist_free(VsmAddrList addrs)
Release VsmAddrList.
Definition: vasum-client.cpp:469
VsmStatus vsm_disconnect(VsmClient client)
Disconnect client from vasum-server.
Definition: vasum-client.cpp:92
VsmStatus vsm_get_poll_fd(VsmClient client, int *fd)
Get file descriptor associated with event dispatcher of zone client.
Definition: vasum-client.cpp:56
void vsm_array_string_free(VsmArrayString astring)
Release VsmArrayString.
Definition: vasum-client.cpp:97
VsmStatus vsm_declare_mount(VsmClient client, const char *source, const char *zone, const char *target, const char *type, uint64_t flags, const char *data)
Create mount point in zone.
Definition: vasum-client.cpp:408
VsmZoneState vsm_zone_get_state(VsmZone zone)
Get zone state (offline)
Definition: vasum-client.cpp:125
VsmStatus vsm_remove_declaration(VsmClient client, const char *zone, VsmString declaration)
Remove declaration.
Definition: vasum-client.cpp:434
VsmStatus vsm_create_netdev_macvlan(VsmClient client, const char *zone, const char *zoneDev, const char *hostDev, enum macvlan_mode mode)
Create macvlan in zone.
Definition: vasum-client.cpp:369
Definition: vasum-client.h:235
VsmStatus vsm_destroy_netdev(VsmClient client, const char *zone, const char *devId)
Remove netdev from zone.
Definition: vasum-client.cpp:392
char data[368]
Definition: initctl.cpp:41
User must handle dispatching messages.
Definition: vasum-client.h:256
void vsm_client_free(VsmClient client)
Release client resources.
Definition: vasum-client.cpp:164
Definition: vasum-client.h:211
VsmStatus vsm_netdev_get_ipv6_addr(VsmClient client, const char *zone, const char *netdevId, struct in6_addr *addr)
Get ipv6 address for given netdevId.
Definition: vasum-client.cpp:303
VsmStatus vsm_enter_eventloop(VsmClient client, int flags, int timeout)
Wait for an I/O event on a vsm client.
Definition: vasum-client.cpp:61
VsmString vsm_zone_get_id(VsmZone zone)
Get zone id (offline)
Definition: vasum-client.cpp:113
Definition: vasum-client.h:248
VsmStatus vsm_netdev_get_ip_addr(VsmClient client, const char *zone, const char *netdevId, VsmAddrList *addrs)
Get ipv4 address for given netdevId.
Definition: vasum-client.cpp:280
Definition: vasum-client.h:214
VsmNetdevType vsm_netdev_get_type(VsmNetdev netdev)
Get netdev type (offline)
Definition: vasum-client.cpp:151
VsmStatus vsm_netdev_add_ipv4_addr(VsmClient client, const char *zone, const char *netdevId, struct in_addr *addr, int prefix)
Add ipv4 address for given netdevId.
Definition: vasum-client.cpp:311
int vsm_zone_get_terminal(VsmZone zone)
Get zone terminal (offline)
Definition: vasum-client.cpp:119
unsigned int VsmSubscriptionId
Subscription id.
Definition: vasum-client.h:205
const char * vsm_get_status_message(VsmClient client)
Get status message of the last vasum-server communication.
Definition: vasum-client.cpp:171
VsmDispacherType
Event dispacher types.
Definition: vasum-client.h:255
VsmClient vsm_client_create()
Create a new vasum-server's client.
Definition: vasum-client.cpp:76
Definition: vasum-client.h:218
VsmNetdevType
Netowrk device type.
Definition: vasum-client.h:232
VsmStatus vsm_del_state_callback(VsmClient client, VsmSubscriptionId subscriptionId)
Unregister dbus state change callback function.
Definition: vasum-client.cpp:255
VsmStatus vsm_netdev_get_ipv4_addr(VsmClient client, const char *zone, const char *netdevId, struct in_addr *addr)
Get ipv4 address for given netdevId.
Definition: vasum-client.cpp:295
VsmStatus vsm_list_declarations(VsmClient client, const char *zone, VsmArrayString *declarations)
Get all declarations.
Definition: vasum-client.cpp:427
const void * vsm_addrlist_get_addr(VsmAddrList addrs, unsigned int i)
Get pointer to in_addr property for i'th entry see inet_ntop man pages.
Definition: vasum-client.cpp:459
VsmStatus vsm_lock_queue(VsmClient client)
Lock the command queue exclusively.
Definition: vasum-client.cpp:46
VsmStatus vsm_get_status(VsmClient client)
Get status code of last vasum-server communication.
Definition: vasum-client.cpp:176
VsmStatus vsm_unlock_queue(VsmClient client)
Unlock the command queue.
Definition: vasum-client.cpp:51
Input/Output error.
Definition: vasum-client.h:195
VsmStatus
Completion status of libvasum-client's functions.
Definition: vasum-client.h:193
User specified error.
Definition: vasum-client.h:194
Definition: vasum-client.h:213
void vsm_string_free(VsmString string)
Release VsmString.
Definition: vasum-client.cpp:108
VsmStatus vsm_destroy_zone(VsmClient client, const char *id, int force)
Remove zone.
Definition: vasum-client.cpp:222
VsmStatus vsm_connect(VsmClient client)
Connect client to the vasum-server.
Definition: vasum-client.cpp:82
VsmStatus vsm_zone_get_netdevs(VsmClient client, const char *zone, VsmArrayString *netdevIds)
Get array of netdev from given zone.
Definition: vasum-client.cpp:273
VsmString * VsmArrayString
NULL-terminated array of strings type.
Definition: vasum-client.h:187
VsmStatus vsm_lookup_zone_by_id(VsmClient client, const char *id, VsmZone *zone)
Get zone informations of zone with given id.
Definition: vasum-client.cpp:201
Definition: vasum-client.h:249
int vsm_addrlist_get_type(VsmAddrList addrs, unsigned int i)
Get address type for i'th entry.
Definition: vasum-client.cpp:454
VsmString vsm_zone_get_rootfs(VsmZone zone)
Get zone rootfs path (offline)
Definition: vasum-client.cpp:131
Other error.
Definition: vasum-client.h:198
VsmZoneState
States of zone.
Definition: vasum-client.h:210
VsmString vsm_netdev_get_name(VsmNetdev netdev)
Get netdev name (offline)
Definition: vasum-client.cpp:145
Definition: vasum-client.h:219
Success.
Definition: vasum-client.h:199
VsmStatus vsm_netdev_up(VsmClient client, const char *zone, const char *netdevId)
Turn up a network device in the zone.
Definition: vasum-client.cpp:347
VsmFileType
File type.
Definition: vasum-client.h:246
VsmStatus vsm_netdev_del_ipv4_addr(VsmClient client, const char *zone, const char *netdevId, struct in_addr *addr, int prefix)
Remove ipv4 address from netdev.
Definition: vasum-client.cpp:329
char * VsmString
NULL-terminated string type.
Definition: vasum-client.h:180
void vsm_netdev_free(VsmNetdev netdev)
Release VsmNetdev.
Definition: vasum-client.cpp:157
Definition: vasum-client.h:215
unsigned int vsm_addrlist_size(VsmAddrList addrs)
Retrieve array size.
Definition: vasum-client.cpp:446
Library will take care of dispatching messages.
Definition: vasum-client.h:257
VsmStatus vsm_get_active_zone_id(VsmClient client, VsmString *id)
Get active (foreground) zone name.
Definition: vasum-client.cpp:191
Definition: vasum-client.h:220
Operation failed.
Definition: vasum-client.h:196
Definition: vasum-client.h:217
void(* VsmZoneDbusStateCallback)(const char *zoneId, const char *address, void *data)
Zone's D-Bus state change callback function signature.
Definition: vasum-client.h:443
unsigned int vsm_addrlist_get_prefix(VsmAddrList addrs, unsigned int i)
Get address prefix for i'th entry.
Definition: vasum-client.cpp:464
VsmStatus vsm_connect_custom(VsmClient client, const char *address)
Connect client to the vasum-server via custom address.
Definition: vasum-client.cpp:87
VsmStatus vsm_grant_device(VsmClient client, const char *zone, const char *device, uint32_t flags)
Grant access to device.
Definition: vasum-client.cpp:260
void * VsmZone
Zone information.
Definition: vasum-client.h:227
Definition: vasum-client.h:221