0,0 → 1,203 |
eax = 74 - Work directly with network interface |
ebx = -1 (Get number of active network devices) |
|
out: |
eax = number of active network devices |
|
bh = device number, for all following functions ! |
|
bl = 0 (Get device type) |
|
out: |
eax = device type number |
|
bl = 1 (Get device name) |
|
in: |
ecx = pointer to 64 byte buffer |
out: |
name is copied into the buffer |
eax = -1 on error |
|
bl = 2 (Reset the device) |
|
in |
none |
out |
eax = -1 on error |
|
bl = 3 (Stop device) |
|
in |
none |
out |
eax = -1 on error |
|
TO BE FIGURED OUT |
|
eax = 75 - Work with Sockets |
|
These functions work like the ones found in UNIX (and windows) |
for more info, please read http://beej.us/guide/bgnet/ |
|
bl = 0 (Open Socket) |
|
in: |
ecx = domain |
edx = type |
esi = protocol |
out: |
eax = socket number, -1 on error |
|
bl = 1 (Close Socket) |
|
in: |
ecx = socket number |
out: |
eax = -1 on error |
|
bl = 2 (Bind) |
|
in: |
ecx = socket number |
edx = pointer to sockaddr structure |
esi = length of sockaddr structure |
out: |
eax = -1 on error |
|
bl = 3 (Listen) |
|
in: |
ecx = socket number |
edx = backlog |
out: |
eax = -1 on error |
|
bl = 4 (connect) |
|
in: |
ecx = socket number |
edx = pointer to sockaddr structure |
esi = length of sockaddr structure |
out: |
eax = -1 on error |
|
bl = 5 (accept) |
|
in: |
ecx = socket number |
edx = pointer to sockaddr structure |
esi = length of sockaddr structure |
out: |
eax = socket number, -1 on error |
|
bl = 6 (send) |
|
in: |
ecx = socket number |
edx = pointer to buffer |
esi = length of buffer |
edi = flags |
out: |
eax = -1 on error |
|
bl = 7 (receive) |
|
in: |
ecx = socket number |
edx = pointer to buffer |
esi = length of buffer |
edi = flags |
out: |
eax = number of bytes copied, -1 on error |
|
bl = 8 (set socket options) |
|
in: |
ecx = socket number |
edx = level |
esi = optionname |
edi = ptr to buffer |
|
The buffer's first dword is the length of the buffer, minus the first dword offcourse |
|
out: |
eax = -1 on error |
|
bl = 9 (get socket options |
|
in: |
ecx = socket number |
edx = level |
esi = optionname |
edi = ptr to buffer |
|
The buffer's first dword is the length of the buffer, minus the first dword offcourse |
|
out: |
eax = -1 on error, socket option otherwise |
|
TIP |
|
when you import 'network.inc' and 'macros.inc' into your source code, you can use the following syntax to work with sockets: |
|
|
for example, to open a socket |
|
mcall socket, AF_INET, SOCK_DGRAM,0 |
mov [socketnum], eax |
|
then to connect to a server |
|
mcall connect, [socketnum], sockaddr, 18 |
|
|
eax = 76 - Work with protocols |
|
high half of ebx = protocol number (for all subfunctions!) |
bh = device number (for all subfunctions!) |
bl = subfunction number, depends on protocol type |
|
For Ethernet protocol |
|
0 - Read # Packets send |
1 - Read # Packets received |
2 - Read # Bytes send |
3 - Read # Bytes received |
4 - Read MAC |
5 - Write MAC |
6 - Read IN-QUEUE size |
7 - Read OUT-QUEUE size |
For IPv4 protocol |
|
0 - Read # IP packets send |
1 - Read # IP packets received |
2 - Read IP |
3 - Write IP |
4 - Read DNS |
5 - Write DNS |
6 - Read subnet |
7 - Write subnet |
8 - Read gateway |
9 - Write gateway |
For ARP protocol |
|
0 - Read # ARP packets send |
1 - Read # ARP packets received |
2 - Get # ARP entry's |
3 - Read ARP entry |
4 - Add static ARP entry |
5 - Remove ARP entry (-1 = remove all) |
For ICMP protocol |
|
0 - Read # ICMP packets send |
1 - Read # ICMP packets received |
3 - enable/disable ICMP echo reply |
For UDP protocol |
|
0 - Read # UDP packets send |
1 - Read # UDP packets received |
For TCP protocol |
|
0 - Read # TCP packets send |
1 - Read # TCP packets received |