mirror of
https://git.rtems.org/rtems-libbsd/
synced 2025-10-14 12:20:07 +08:00
Update to FreeBSD head 2016-12-10
Git mirror commit 80c55f08a05ab3b26a73b226ccb56adc3122a55c.
This commit is contained in:
@@ -45,6 +45,7 @@
|
||||
__FBSDID("$FreeBSD$");
|
||||
|
||||
#include "dhcpd.h"
|
||||
#include "privsep.h"
|
||||
|
||||
#include <sys/ioctl.h>
|
||||
|
||||
@@ -107,8 +108,8 @@ discover_interfaces(struct interface_info *iface)
|
||||
if (foo.sin_addr.s_addr == htonl(INADDR_LOOPBACK))
|
||||
continue;
|
||||
if (!iface->ifp) {
|
||||
int len = IFNAMSIZ + ifa->ifa_addr->sa_len;
|
||||
if ((tif = malloc(len)) == NULL)
|
||||
if ((tif = calloc(1, sizeof(struct ifreq)))
|
||||
== NULL)
|
||||
error("no space to remember ifp");
|
||||
strlcpy(tif->ifr_name, ifa->ifa_name, IFNAMSIZ);
|
||||
memcpy(&tif->ifr_addr, ifa->ifa_addr,
|
||||
@@ -503,3 +504,46 @@ interface_link_status(char *ifname)
|
||||
}
|
||||
return (1);
|
||||
}
|
||||
|
||||
void
|
||||
interface_set_mtu_unpriv(int privfd, u_int16_t mtu)
|
||||
{
|
||||
struct imsg_hdr hdr;
|
||||
struct buf *buf;
|
||||
int errs = 0;
|
||||
|
||||
hdr.code = IMSG_SET_INTERFACE_MTU;
|
||||
hdr.len = sizeof(hdr) +
|
||||
sizeof(u_int16_t);
|
||||
|
||||
if ((buf = buf_open(hdr.len)) == NULL)
|
||||
error("buf_open: %m");
|
||||
|
||||
errs += buf_add(buf, &hdr, sizeof(hdr));
|
||||
errs += buf_add(buf, &mtu, sizeof(mtu));
|
||||
if (errs)
|
||||
error("buf_add: %m");
|
||||
|
||||
if (buf_close(privfd, buf) == -1)
|
||||
error("buf_close: %m");
|
||||
}
|
||||
|
||||
void
|
||||
interface_set_mtu_priv(char *ifname, u_int16_t mtu)
|
||||
{
|
||||
struct ifreq ifr;
|
||||
int sock;
|
||||
|
||||
if ((sock = socket(AF_INET, SOCK_DGRAM, 0)) == -1)
|
||||
error("Can't create socket");
|
||||
|
||||
memset(&ifr, 0, sizeof(ifr));
|
||||
|
||||
strlcpy(ifr.ifr_name, ifname, sizeof(ifr.ifr_name));
|
||||
ifr.ifr_mtu = mtu;
|
||||
|
||||
if (ioctl(sock, SIOCSIFMTU, &ifr) == -1)
|
||||
warning("SIOCSIFMTU failed (%d): %s", mtu,
|
||||
strerror(errno));
|
||||
close(sock);
|
||||
}
|
||||
|
Reference in New Issue
Block a user