mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-28 05:08:22 +00:00
socket: SIOCSIFADDR ioctl
This commit is contained in:
@@ -64,6 +64,21 @@ int sockfs_setattr(vnode_t *node, vattr_t *attr, cred_t *cred) {
|
||||
// arg can be in userspace
|
||||
int sockfs_ioctl(vnode_t *node, unsigned long request, void *arg, int *result) {
|
||||
switch (request) {
|
||||
case SIOCSIFADDR:
|
||||
{
|
||||
ifreq_t *ifreq = arg;
|
||||
netdev_t *netdev = netdev_getdev(ifreq->name);
|
||||
if(netdev) {
|
||||
sockaddr_t sockaddr;
|
||||
int e = sock_convertaddress(&sockaddr, &ifreq->addr);
|
||||
if (e)
|
||||
return e;
|
||||
netdev->ip = sockaddr.ipv4addr.addr;
|
||||
} else {
|
||||
return ENODEV;
|
||||
}
|
||||
break;
|
||||
}
|
||||
case SIOCGIFHWADDR:
|
||||
{
|
||||
ifreq_t *ifreq = arg;
|
||||
|
||||
@@ -130,6 +130,7 @@ typedef struct {
|
||||
#define IFNAMSIZ 16
|
||||
#define SIOCGIFHWADDR 0x8927
|
||||
#define SIOCADDRT 0x890b
|
||||
#define SIOCSIFADDR 0x8916
|
||||
|
||||
typedef struct {
|
||||
char name[IFNAMSIZ];
|
||||
|
||||
Reference in New Issue
Block a user