Hello, Eugene!
EG> This book is for anyone responsible for administering one or more systems
EG> running the Solaris 8 release. It covers a broad range of Solaris
EG> network administration topics such as managing TCP/IP networks,
EG> modems, remote file systems, mail and DHCP.
EG> Так что это про SunOS 4 и ранее, которые были BSD-based.
Да, я просто хотел уточнить нет ли чего-то похожего в FreeBSD. Ковыряю одну
утилитку, ее портировали из Sun, с товарищами ее пробуем допилить, подебажить,
можно будет и порт оформить.
Програмулька использует код типа:
void
set_inet_addr(const char *name, struct route_info *route_info_p)
{
int status;
struct addrinfo *res;
struct sockaddr *sa = &route_info_p->ifr.ifr_addr;
status = getaddrinfo(name, NULL, NULL, &res);
if (status < 0)
err(1, "getaddrinfo status = %d %s\n", status, strerror(errno) );
sa->sa_family = AF_INET;
sa->sa_len = sizeof(res->ai_addr);
bcopy(res->ai_addr, sa, sizeof(*sa));
freeaddrinfo(res);
status = ioctl(route_info_p->sock, SIOCAIFADDR, &route_info_p->ifr);
if (status < 0)
err(1, "SIOCAIFADDR status = %d %s\n", status, strerror(errno) );
}
Програмулька заточена на файл /etc/netmasks, который где-то видимо прописан в
хедерах Sun, если собрать в gcc12 или в clang10,
прога работает и запускается с ворнингом:
tap0: set address: WARNING: network mask should be specified; using historical
default
при этом маска устанавливается как 255.0.0.0
А если собрано clang14 то не запускается:
ethernet devname is tap0
ax25tap: SIOCAIFADDR status = -1 Invalid argument
: Invalid argument
-std=c99 не помог