mirror of
https://github.com/Mathewnd/Astral.git
synced 2026-10-27 12:48:22 +00:00
socket: SIOCGIFINDEX
This commit is contained in:
@@ -137,6 +137,10 @@ static int handle_ifreq(unsigned long request, ifreq_t *uifreq, cred_t *cred) {
|
||||
int mtu = netdev->mtu;
|
||||
return USERCOPY_POSSIBLY_TO_USER(&uifreq->mtu, &mtu, sizeof(mtu));
|
||||
}
|
||||
case SIOCGIFINDEX: {
|
||||
int ifindex = netdev->ifindex;
|
||||
return USERCOPY_POSSIBLY_TO_USER(&uifreq->ifindex, &ifindex, sizeof(ifindex));
|
||||
}
|
||||
case SIOCGIFFLAGS: {
|
||||
short flags = netdev->flags;
|
||||
return USERCOPY_POSSIBLY_TO_USER(&uifreq->flags, &flags, sizeof(flags));
|
||||
@@ -152,6 +156,7 @@ int sockfs_ioctl(vnode_t *node, unsigned long request, void *arg, int *result, c
|
||||
case SIOCSIFADDR:
|
||||
case SIOCGIFHWADDR:
|
||||
case SIOCGIFMTU:
|
||||
case SIOCGIFINDEX:
|
||||
case SIOCGIFFLAGS:
|
||||
return handle_ifreq(request, arg, cred);
|
||||
case SIOCADDRT: {
|
||||
|
||||
@@ -184,6 +184,7 @@ typedef struct {
|
||||
#define SIOCSIFADDR 0x8916
|
||||
#define SIOCGIFMTU 0x8921
|
||||
#define SIOCGIFHWADDR 0x8927
|
||||
#define SIOCGIFINDEX 0x8933
|
||||
#define SIOCADDRT 0x890b
|
||||
#define FIONREAD 0x541B
|
||||
#define FIONBIO 0x5421
|
||||
@@ -193,6 +194,7 @@ typedef struct {
|
||||
union {
|
||||
abisockaddr_t addr;
|
||||
int mtu;
|
||||
int ifindex;
|
||||
short flags;
|
||||
};
|
||||
} ifreq_t;
|
||||
|
||||
@@ -37,6 +37,7 @@ typedef struct {
|
||||
|
||||
typedef struct netdev_t {
|
||||
mac_t mac;
|
||||
int ifindex;
|
||||
size_t mtu;
|
||||
uint32_t ip;
|
||||
int ipcurrid; // XXX This is defined as something per peer. However, having only one of these *should* work for most cases
|
||||
|
||||
@@ -264,6 +264,7 @@ int netdev_register(netdev_t *netdev, char *name) {
|
||||
hashtable_remove(&nametable, name, strlen(name));
|
||||
|
||||
minors[minor] = netdev;
|
||||
netdev->ifindex = minor + 1;
|
||||
|
||||
leave:
|
||||
MUTEX_RELEASE(&tablelock);
|
||||
|
||||
Reference in New Issue
Block a user