* Copyright 2008, Haiku, Inc. All Rights Reserved.
* Distributed under the terms of the MIT License.
*/
network's stack notification module.
*/
#include <net_notifications.h>
#include <MessengerPrivate.h>
#include <generic_syscall_defs.h>
#include <syscalls.h>
static status_t
check_for_notifications_syscall(void)
{
uint32 version = 0;
return _kern_generic_syscall(NET_NOTIFICATIONS_SYSCALLS, B_SYSCALL_INFO,
&version, sizeof(version));
}
status_t
start_watching_network(uint32 flags, const BMessenger& target)
{
if (check_for_notifications_syscall() != B_OK)
return B_NOT_SUPPORTED;
BMessenger::Private targetPrivate(const_cast<BMessenger&>(target));
net_notifications_control control;
control.flags = flags;
control.port = targetPrivate.Port();
control.token = targetPrivate.Token();
return _kern_generic_syscall(NET_NOTIFICATIONS_SYSCALLS,
NET_NOTIFICATIONS_CONTROL_WATCHING, &control,
sizeof(net_notifications_control));
}
status_t
start_watching_network(uint32 flags, const BHandler* handler,
const BLooper* looper)
{
const BMessenger target(handler, looper);
return start_watching_network(flags, target);
}
status_t
stop_watching_network(const BMessenger& target)
{
return start_watching_network(0, target);
}
status_t
stop_watching_network(const BHandler* handler, const BLooper* looper)
{
const BMessenger target(handler, looper);
return stop_watching_network(target);
}