1,5 → 1,56 |
#include<menuet/net.h> |
|
|
unsigned long inet_addr(char *cp) |
{ |
// Adapted from here http://stackoverflow.com/a/1684635 |
unsigned long __ret; |
unsigned int c1,c2,c3,c4; |
sscanf(cp, "%d.%d.%d.%d", &c1,&c2,&c3,&c4); |
__ret = (unsigned long)c4+c3*256+c2*256*256+c1*256*256*256; |
return htonl(__ret); |
} |
|
int socket(int domain, int type, int protocol) |
{ |
int __ret; |
__asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_OPENSF),"c"(domain),"d"(type),"S"(protocol)); |
return __ret; |
} |
|
int close_socket(int s) |
{ |
int __ret; |
__asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_CLOSESF),"c"(s)); |
return __ret; |
} |
|
|
int connect(int sockfd, const struct sockaddr *serv_addr, int addrlen) |
{ |
int __ret; |
__asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_CONNECTSF),"c"(sockfd),"d"(serv_addr),"S"(addrlen)); |
return __ret; |
} |
|
int send(int s, const void *buf, int len, int flags) |
{ |
int __ret; |
__asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_SENDSF),"c"(s),"d"(buf),"S"(len),"D"(flags)); |
return __ret; |
} |
|
int recv(int sockfd, void *buf, int len, int flags) |
{ |
int __ret; |
__asm__("int $0x40":"=a"(__ret):"a"(_SOCKETF),"b"(_RECEIVESF),"c"(sockfd),"d"(buf),"S"(len),"D"(flags)); |
return __ret; |
} |
|
|
|
// -------------------------------------------------------------- |
|
__u32 __menuet__open_UDP_socket(__u32 local_port,__u32 remote_port,__u32 remote_ip) |
{ |
__u32 __ret; |