/
githubmirror
/
libteam
Обзор
Документация
Войти
/
githubmirror
/
libteam
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
v1.7
include/private/misc.h
105 строк
2 KB
Jiri Pirko
update copyright dates and emails
08 авг 2013, 15:13
08 авг 2013, 15:13
b3cf8f9
Код
Авторство
О чём код?
/* * misc.c - Miscellaneous helpers * Copyright (C) 2011-2013 Jiri Pirko <jiri@resnulli.us> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; either * version 2.1 of the License, or (at your option) any later version. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #ifndef _T_MISC_H_ #define _T_MISC_H_ #include <stdio.h> #include <stdlib.h> #include <errno.h> #include <string.h> #include <stdarg.h> #include <unistd.h> #include <sys/socket.h> #include <inttypes.h> #include <sys/ioctl.h> #include <linux/if.h> static inline void *myzalloc(size_t size) { return calloc(1, size); } static inline size_t mystrlcpy(char *dst, const char *src, size_t size) { size_t ret = strlen(src); if (size) { size_t len = (ret >= size) ? size - 1 : ret; memcpy(dst, src, len); dst[len] = '\0'; } return ret; } #define ARRAY_SIZE(x) (sizeof(x) / sizeof((x)[0])) static inline void hwaddr_str(char *str, char *hwaddr, size_t len) { int i; for (i = 0; i < len; i++) { sprintf(str, "%02x:", (unsigned char) hwaddr[i]); str += 3; } *(str - 1) = '\0'; } static inline size_t hwaddr_str_len(size_t len) { return len * 3 + 1; } static inline char *a_hwaddr_str(char *hwaddr, size_t len) { char *str; str = malloc(sizeof(char) * hwaddr_str_len(len)); if (!str) return NULL; hwaddr_str(str, hwaddr, len); return str; } static inline int ifname2ifindex(uint32_t *p_ifindex, char *ifname) { int sock; struct ifreq ifr; int ret; sock = socket(PF_PACKET, SOCK_DGRAM, 0); if (sock == -1) return -errno; memset(&ifr, 0, sizeof(ifr)); strncpy(ifr.ifr_name, ifname, IFNAMSIZ); ret = ioctl(sock, SIOCGIFINDEX, &ifr); close(sock); if (ret == -1) { if (errno == ENODEV) *p_ifindex = 0; else return -errno; } else { *p_ifindex = ifr.ifr_ifindex; } return 0; } #endif /* _T_MISC_H_ */