* Perform ifreq ioctl() on associated netdev ifname. * * @param[in] ifname * Pointer to netdev name. * @param req * Request number to pass to ioctl(). * @param[out] ifr * Interface request structure output buffer. * * @return * 0 on success, a negative errno value otherwise and rte_errno is set. */
| 196 | * 0 on success, a negative errno value otherwise and rte_errno is set. |
| 197 | */ |
| 198 | static int |
| 199 | mlx5_ifreq_by_ifname(const char *ifname, int req, struct ifreq *ifr) |
| 200 | { |
| 201 | int sock = socket(PF_INET, SOCK_DGRAM, IPPROTO_IP); |
| 202 | int ret = 0; |
| 203 | |
| 204 | if (sock == -1) { |
| 205 | rte_errno = errno; |
| 206 | return -rte_errno; |
| 207 | } |
| 208 | rte_strscpy(ifr->ifr_name, ifname, sizeof(ifr->ifr_name)); |
| 209 | ret = ioctl(sock, req, ifr); |
| 210 | if (ret == -1) { |
| 211 | rte_errno = errno; |
| 212 | goto error; |
| 213 | } |
| 214 | close(sock); |
| 215 | return 0; |
| 216 | error: |
| 217 | close(sock); |
| 218 | return -rte_errno; |
| 219 | } |
| 220 | |
| 221 | /** |
| 222 | * Perform ifreq ioctl() on associated Ethernet device. |
no test coverage detected