## HwBinder IPC from client to server, and callbacks
binder_call(hal_tetheroffload_client, hal_tetheroffload_server)
binder_call(hal_tetheroffload_server, hal_tetheroffload_client)

hal_attribute_hwservice(hal_tetheroffload, hal_tetheroffload_hwservice)
hal_attribute_service(hal_tetheroffload, hal_tetheroffload_service)

binder_use(hal_tetheroffload_server)

# allow the client to pass the server already open netlink sockets
allow hal_tetheroffload_server hal_tetheroffload_client:netlink_netfilter_socket { getattr read setopt write };
