mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-14 13:15:21 +08:00
Use getsockname() from FreeBSD
This commit is contained in:
@@ -1699,7 +1699,11 @@ kern_getsockopt(td, s, level, name, val, valseg, valsize)
|
||||
return (error);
|
||||
}
|
||||
|
||||
#ifndef __rtems__
|
||||
#ifdef __rtems__
|
||||
int
|
||||
kern_getsockname(struct thread *td, int fd, struct sockaddr **sa,
|
||||
socklen_t *alen);
|
||||
#endif /* __rtems__ */
|
||||
/*
|
||||
* getsockname1() - Get socket name.
|
||||
*/
|
||||
@@ -1738,6 +1742,28 @@ getsockname1(td, uap, compat)
|
||||
error = copyout(&len, uap->alen, sizeof(len));
|
||||
return (error);
|
||||
}
|
||||
#ifdef __rtems__
|
||||
int
|
||||
getsockname(int socket, struct sockaddr *__restrict address,
|
||||
socklen_t *__restrict address_len)
|
||||
{
|
||||
struct thread *td = rtems_bsd_get_curthread_or_null();
|
||||
struct getsockname_args ua = {
|
||||
.fdes = socket,
|
||||
.asa = address,
|
||||
.alen = address_len
|
||||
};
|
||||
int error;
|
||||
|
||||
if (td != NULL) {
|
||||
error = getsockname1(td, &ua);
|
||||
} else {
|
||||
error = ENOMEM;
|
||||
}
|
||||
|
||||
return rtems_bsd_error_to_status_and_errno(error);
|
||||
}
|
||||
#endif /* __rtems__ */
|
||||
|
||||
int
|
||||
kern_getsockname(struct thread *td, int fd, struct sockaddr **sa,
|
||||
@@ -1780,6 +1806,7 @@ bad:
|
||||
return (error);
|
||||
}
|
||||
|
||||
#ifndef __rtems__
|
||||
int
|
||||
getsockname(td, uap)
|
||||
struct thread *td;
|
||||
|
@@ -156,12 +156,12 @@ struct getpeername_args {
|
||||
char asa_l_[PADL_(struct sockaddr *__restrict)]; struct sockaddr *__restrict asa; char asa_r_[PADR_(struct sockaddr *__restrict)];
|
||||
char alen_l_[PADL_(__socklen_t *__restrict)]; __socklen_t *__restrict alen; char alen_r_[PADR_(__socklen_t *__restrict)];
|
||||
};
|
||||
#ifndef __rtems__
|
||||
struct getsockname_args {
|
||||
char fdes_l_[PADL_(int)]; int fdes; char fdes_r_[PADR_(int)];
|
||||
char asa_l_[PADL_(struct sockaddr *__restrict)]; struct sockaddr *__restrict asa; char asa_r_[PADR_(struct sockaddr *__restrict)];
|
||||
char alen_l_[PADL_(__socklen_t *__restrict)]; __socklen_t *__restrict alen; char alen_r_[PADR_(__socklen_t *__restrict)];
|
||||
};
|
||||
#ifndef __rtems__
|
||||
struct access_args {
|
||||
char path_l_[PADL_(char *)]; char * path; char path_r_[PADR_(char *)];
|
||||
char flags_l_[PADL_(int)]; int flags; char flags_r_[PADR_(int)];
|
||||
|
Reference in New Issue
Block a user