@ -215,10 +215,151 @@ public:
}
} ;
class INetworkService final : public ServiceFramework < INetworkService > {
public :
explicit INetworkService ( Core : : System & system_ ) : ServiceFramework { system_ , " INetworkService " } {
// clang-format off
static const FunctionInfo functions [ ] = {
{ 0 , nullptr , " Initialize " } ,
{ 256 , nullptr , " AttachNetworkInterfaceStateChangeEvent " } ,
{ 264 , nullptr , " GetNetworkInterfaceLastError " } ,
{ 272 , nullptr , " GetRole " } ,
{ 280 , nullptr , " GetAdvertiseData " } ,
{ 288 , nullptr , " GetGroupInfo " } ,
{ 296 , nullptr , " GetGroupInfo2 " } ,
{ 304 , nullptr , " GetGroupOwner " } ,
{ 312 , nullptr , " GetIpConfig " } ,
{ 320 , nullptr , " GetLinkLevel " } ,
{ 512 , nullptr , " Scan " } ,
{ 768 , nullptr , " CreateGroup " } ,
{ 776 , nullptr , " DestroyGroup " } ,
{ 784 , nullptr , " SetAdvertiseData " } ,
{ 1536 , nullptr , " SendToOtherGroup " } ,
{ 1544 , nullptr , " RecvFromOtherGroup " } ,
{ 1552 , nullptr , " AddAcceptableGroupId " } ,
{ 1560 , nullptr , " ClearAcceptableGroupId " } ,
} ;
// clang-format on
RegisterHandlers ( functions ) ;
}
} ;
class INetworkServiceMonitor final : public ServiceFramework < INetworkServiceMonitor > {
public :
explicit INetworkServiceMonitor ( Core : : System & system_ )
: ServiceFramework { system_ , " INetworkServiceMonitor " } {
// clang-format off
static const FunctionInfo functions [ ] = {
{ 0 , & INetworkServiceMonitor : : Initialize , " Initialize " } ,
{ 256 , nullptr , " AttachNetworkInterfaceStateChangeEvent " } ,
{ 264 , nullptr , " GetNetworkInterfaceLastError " } ,
{ 272 , nullptr , " GetRole " } ,
{ 280 , nullptr , " GetAdvertiseData " } ,
{ 281 , nullptr , " GetAdvertiseData2 " } ,
{ 288 , nullptr , " GetGroupInfo " } ,
{ 296 , nullptr , " GetGroupInfo2 " } ,
{ 304 , nullptr , " GetGroupOwner " } ,
{ 312 , nullptr , " GetIpConfig " } ,
{ 320 , nullptr , " GetLinkLevel " } ,
{ 328 , nullptr , " AttachJoinEvent " } ,
{ 336 , nullptr , " GetMembers " } ,
} ;
// clang-format on
RegisterHandlers ( functions ) ;
}
void Initialize ( Kernel : : HLERequestContext & ctx ) {
LOG_WARNING ( Service_LDN , " (STUBBED) called " ) ;
IPC : : ResponseBuilder rb { ctx , 2 } ;
rb . Push ( ERROR_DISABLED ) ;
}
} ;
class LP2PAPP final : public ServiceFramework < LP2PAPP > {
public :
explicit LP2PAPP ( Core : : System & system_ ) : ServiceFramework { system_ , " lp2p:app " } {
// clang-format off
static const FunctionInfo functions [ ] = {
{ 0 , & LP2PAPP : : CreateMonitorService , " CreateNetworkService " } ,
{ 8 , & LP2PAPP : : CreateMonitorService , " CreateNetworkServiceMonitor " } ,
} ;
// clang-format on
RegisterHandlers ( functions ) ;
}
void CreateNetworkervice ( Kernel : : HLERequestContext & ctx ) {
IPC : : RequestParser rp { ctx } ;
const u64 reserved_input = rp . Pop < u64 > ( ) ;
const u32 input = rp . Pop < u32 > ( ) ;
LOG_WARNING ( Service_LDN , " (STUBBED) called reserved_input={} input={} " , reserved_input ,
input ) ;
IPC : : ResponseBuilder rb { ctx , 2 , 0 , 1 } ;
rb . Push ( RESULT_SUCCESS ) ;
rb . PushIpcInterface < INetworkService > ( system ) ;
}
void CreateMonitorService ( Kernel : : HLERequestContext & ctx ) {
IPC : : RequestParser rp { ctx } ;
const u64 reserved_input = rp . Pop < u64 > ( ) ;
LOG_WARNING ( Service_LDN , " (STUBBED) called reserved_input={} " , reserved_input ) ;
IPC : : ResponseBuilder rb { ctx , 2 , 0 , 1 } ;
rb . Push ( RESULT_SUCCESS ) ;
rb . PushIpcInterface < INetworkServiceMonitor > ( system ) ;
}
} ;
class LP2PSYS final : public ServiceFramework < LP2PSYS > {
public :
explicit LP2PSYS ( Core : : System & system_ ) : ServiceFramework { system_ , " lp2p:sys " } {
// clang-format off
static const FunctionInfo functions [ ] = {
{ 0 , & LP2PSYS : : CreateMonitorService , " CreateNetworkService " } ,
{ 8 , & LP2PSYS : : CreateMonitorService , " CreateNetworkServiceMonitor " } ,
} ;
// clang-format on
RegisterHandlers ( functions ) ;
}
void CreateNetworkervice ( Kernel : : HLERequestContext & ctx ) {
IPC : : RequestParser rp { ctx } ;
const u64 reserved_input = rp . Pop < u64 > ( ) ;
const u32 input = rp . Pop < u32 > ( ) ;
LOG_WARNING ( Service_LDN , " (STUBBED) called reserved_input={} input={} " , reserved_input ,
input ) ;
IPC : : ResponseBuilder rb { ctx , 2 , 0 , 1 } ;
rb . Push ( RESULT_SUCCESS ) ;
rb . PushIpcInterface < INetworkService > ( system ) ;
}
void CreateMonitorService ( Kernel : : HLERequestContext & ctx ) {
IPC : : RequestParser rp { ctx } ;
const u64 reserved_input = rp . Pop < u64 > ( ) ;
LOG_WARNING ( Service_LDN , " (STUBBED) called reserved_input={} " , reserved_input ) ;
IPC : : ResponseBuilder rb { ctx , 2 , 0 , 1 } ;
rb . Push ( RESULT_SUCCESS ) ;
rb . PushIpcInterface < INetworkServiceMonitor > ( system ) ;
}
} ;
void InstallInterfaces ( SM : : ServiceManager & sm , Core : : System & system ) {
std : : make_shared < LDNM > ( system ) - > InstallAsService ( sm ) ;
std : : make_shared < LDNS > ( system ) - > InstallAsService ( sm ) ;
std : : make_shared < LDNU > ( system ) - > InstallAsService ( sm ) ;
std : : make_shared < LP2PAPP > ( system ) - > InstallAsService ( sm ) ;
std : : make_shared < LP2PSYS > ( system ) - > InstallAsService ( sm ) ;
}
} // namespace Service::LDN