Difference between revisions of "SOCU:gethostbyaddr"

From 3dbrew
Jump to navigation Jump to search
(Created page with "=Request= {| class="wikitable" border="1" |- ! Index Word ! Description |- | 0 | Header code [0x000E00C2] |- | 1 | Input address buffer size. |- | 2 | Type (should be AF_INET) ...")
 
(→‎Description: Add hostent struct docs)
 
(One intermediate revision by one other user not shown)
Line 36: Line 36:
 
| Pointer to output buf
 
| Pointer to output buf
 
|}
 
|}
 +
 +
=Response=
 +
{| class="wikitable" border="1"
 +
|-
 +
!  Index Word
 +
!  Description
 +
|-
 +
| 0
 +
| Header code
 +
|-
 +
| 1
 +
| Result code
 +
|-
 +
| 2
 +
| POSIX return value
 +
|}
 +
 +
=struct hostent=
 +
Internally the sysmodule uses the standard hostent struct, but using s16 for h_addrtype and h_length:
 +
 +
struct hostent {
 +
char*  h_name;
 +
char** h_aliases;
 +
s16    h_addrtype;
 +
s16    h_length;
 +
char** h_addr_list;
 +
};
 +
 +
However, the struct returned is different from the internal one:
 +
 +
struct hostent_3ds_t {
 +
s16          h_addrtype;    //< Host address type
 +
s16          h_length;      //< Length of address. Maximum of 16 for IPV6
 +
s16          h_addr_count;  //< Number of addresses returned. Maximum of 24
 +
s16          h_alias_count; //< Number of aliases returned. Maximum of 24
 +
char[256]    h_name;        //< Official name of host
 +
char[256][24] h_aliases;    //< Alias list
 +
char[16][24]  h_addr_list;  //< List of addresses from name server
 +
};
 +
 +
Its size is of 0x1A88 bytes.

Latest revision as of 01:06, 29 March 2024

Request[edit]

Index Word Description
0 Header code [0x000E00C2]
1 Input address buffer size.
2 Type (should be AF_INET)
3 Output buffer size, normally 0x1A88-bytes.
4 (insize<<14) | 0x1002
5 Pointer to input address buffer

The following is located 0x100-bytes after the beginning of the above command buffer:

Index Word Description
0 (outsize<<14) | 2
1 Pointer to output buf

Response[edit]

Index Word Description
0 Header code
1 Result code
2 POSIX return value

struct hostent[edit]

Internally the sysmodule uses the standard hostent struct, but using s16 for h_addrtype and h_length:

struct hostent {
	char*  h_name;
	char** h_aliases;
	s16    h_addrtype;
	s16    h_length;
	char** h_addr_list;
};

However, the struct returned is different from the internal one:

struct hostent_3ds_t {
	s16           h_addrtype;    //< Host address type
	s16           h_length;      //< Length of address. Maximum of 16 for IPV6
	s16           h_addr_count;  //< Number of addresses returned. Maximum of 24
	s16           h_alias_count; //< Number of aliases returned. Maximum of 24
	char[256]     h_name;        //< Official name of host
	char[256][24] h_aliases;     //< Alias list
	char[16][24]  h_addr_list;   //< List of addresses from name server
};

Its size is of 0x1A88 bytes.