Kernel: Add support for SIOCGIFNAME ioctl
This commit is contained in:
		
							parent
							
								
									a231f8587e
								
							
						
					
					
						commit
						c02de2580d
					
				|  | @ -95,6 +95,14 @@ namespace Kernel | ||||||
| 				memcpy(ifreq->ifr_ifru.ifru_hwaddr.sa_data, &mac_address, sizeof(mac_address)); | 				memcpy(ifreq->ifr_ifru.ifru_hwaddr.sa_data, &mac_address, sizeof(mac_address)); | ||||||
| 				return 0; | 				return 0; | ||||||
| 			} | 			} | ||||||
|  | 			case SIOCGIFNAME: | ||||||
|  | 			{ | ||||||
|  | 				auto& ifrn_name = ifreq->ifr_ifrn.ifrn_name; | ||||||
|  | 				ASSERT(m_interface->name().size() < sizeof(ifrn_name)); | ||||||
|  | 				memcpy(ifrn_name, m_interface->name().data(), m_interface->name().size()); | ||||||
|  | 				ifrn_name[m_interface->name().size()] = '\0'; | ||||||
|  | 				return 0; | ||||||
|  | 			} | ||||||
| 			default: | 			default: | ||||||
| 				return BAN::Error::from_errno(EINVAL); | 				return BAN::Error::from_errno(EINVAL); | ||||||
| 		} | 		} | ||||||
|  |  | ||||||
|  | @ -19,6 +19,10 @@ struct if_nameindex | ||||||
| 
 | 
 | ||||||
| struct ifreq | struct ifreq | ||||||
| { | { | ||||||
|  | 	union { | ||||||
|  | 		char ifrn_name[IF_NAMESIZE]; | ||||||
|  | 	} ifr_ifrn; | ||||||
|  | 
 | ||||||
| 	union { | 	union { | ||||||
| 		struct sockaddr ifru_addr; | 		struct sockaddr ifru_addr; | ||||||
| 		struct sockaddr ifru_netmask; | 		struct sockaddr ifru_netmask; | ||||||
|  | @ -35,6 +39,7 @@ struct ifreq | ||||||
| #define SIOCGIFGWADDR	5	/* Get gateway address */ | #define SIOCGIFGWADDR	5	/* Get gateway address */ | ||||||
| #define SIOCSIFGWADDR	6	/* Set gateway address */ | #define SIOCSIFGWADDR	6	/* Set gateway address */ | ||||||
| #define SIOCGIFHWADDR	7	/* Get hardware address */ | #define SIOCGIFHWADDR	7	/* Get hardware address */ | ||||||
|  | #define SIOCGIFNAME		8	/* Get interface name */ | ||||||
| 
 | 
 | ||||||
| void					if_freenameindex(struct if_nameindex* ptr); | void					if_freenameindex(struct if_nameindex* ptr); | ||||||
| char*					if_indextoname(unsigned ifindex, char* ifname); | char*					if_indextoname(unsigned ifindex, char* ifname); | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue