forked from KolibriOS/kolibrios
Added network.obj loader to C_layer
git-svn-id: svn://kolibrios.org@8345 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
bed1d7841c
commit
a327d88cb7
48
contrib/C_Layer/ASM/loadnetwork.asm
Normal file
48
contrib/C_Layer/ASM/loadnetwork.asm
Normal file
@ -0,0 +1,48 @@
|
||||
format coff
|
||||
use32 ; Tell compiler to use 32 bit instructions
|
||||
|
||||
section '.flat' code
|
||||
|
||||
include '../../../programs/proc32.inc'
|
||||
include '../../../programs/macros.inc'
|
||||
purge section,mov,add,sub
|
||||
|
||||
include '../../../programs/dll.inc'
|
||||
|
||||
purge section,mov,add,sub
|
||||
|
||||
public lib_init as '_networklib_init'
|
||||
|
||||
proc lib_init
|
||||
local retval dd ?
|
||||
mov [retval], eax
|
||||
pusha
|
||||
mcall 68, 11
|
||||
test eax, eax
|
||||
jnz @f
|
||||
mov [retval], -1
|
||||
jmp exit_init_networklib
|
||||
@@:
|
||||
stdcall dll.Load, @IMPORT
|
||||
test eax, eax
|
||||
jz exit_init_networklib
|
||||
mov [retval], -1
|
||||
exit_init_networklib:
|
||||
popa
|
||||
mov eax, [retval]
|
||||
ret
|
||||
endp
|
||||
|
||||
@IMPORT:
|
||||
library networklib, 'network.obj'
|
||||
|
||||
import networklib, \
|
||||
inet_addr, 'inet_addr', \
|
||||
inet_ntoa, 'inet_ntoa', \
|
||||
getaddrinfo, 'getaddrinfo', \
|
||||
freeaddrinfo, 'freeaddrinfo'
|
||||
|
||||
public inet_addr as '_inet_addr'
|
||||
public inet_ntoa as '_inet_ntoa'
|
||||
public getaddrinfo as '_getaddrinfo'
|
||||
public freeaddrinfo as '_freeaddrinfo'
|
54
contrib/C_Layer/INCLUDE/kolibri_network.h
Normal file
54
contrib/C_Layer/INCLUDE/kolibri_network.h
Normal file
@ -0,0 +1,54 @@
|
||||
#ifndef __NETWORK_H
|
||||
#define __NETWORK_H
|
||||
|
||||
#include <sys/socket.h>
|
||||
|
||||
#define EAI_ADDRFAMILY 1
|
||||
#define EAI_AGAIN 2
|
||||
#define EAI_BADFLAGS 3
|
||||
#define EAI_FAIL 4
|
||||
#define EAI_FAMILY 5
|
||||
#define EAI_MEMORY 6
|
||||
#define EAI_NONAME 8
|
||||
#define EAI_SERVICE 9
|
||||
#define EAI_SOCKTYPE 10
|
||||
#define EAI_BADHINTS 12
|
||||
#define EAI_PROTOCOL 13
|
||||
#define EAI_OVERFLOW 14
|
||||
|
||||
// Flags for addrinfo
|
||||
#define AI_PASSIVE 1
|
||||
#define AI_CANONNAME 2
|
||||
#define AI_NUMERICHOST 4
|
||||
#define AI_NUMERICSERV 8
|
||||
#define AI_ADDRCONFIG 0x400
|
||||
|
||||
#pragma pack(push, 1)
|
||||
struct ARP_entry{
|
||||
unsigned int IP;
|
||||
unsigned char MAC[6];
|
||||
unsigned short status;
|
||||
unsigned short TTL;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
#pragma pack(push, 1)
|
||||
struct addrinfo {
|
||||
int ai_flags;
|
||||
int ai_family;
|
||||
int ai_socktype;
|
||||
int ai_protocol;
|
||||
int ai_addrlen;
|
||||
char *ai_canonname;
|
||||
sockaddr *ai_addr;
|
||||
struct addrinfo *ai_next;
|
||||
};
|
||||
#pragma pack(pop)
|
||||
|
||||
extern int networklib_init ();
|
||||
extern int (*inet_addr)(const char* hostname) __attribute__ ((stdcall));
|
||||
extern char* (*inet_ntoa)(int ip_addr) __attribute__ ((stdcall));
|
||||
extern int (*getaddrinfo)(char* hostname, int servname, struct addrinfo* hints, struct addrinfo** res) __attribute__ ((stdcall));
|
||||
extern void (*freeaddrinfo)(struct addrinfo* ai) __attribute__ ((stdcall));
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user