1 /* MTU get using kvm_read.
2 * Copyright (C) 1999 Kunihiro Ishiguro
4 * This file is part of GNU Zebra.
6 * GNU Zebra is free software; you can redistribute it and/or modify it
7 * under the terms of the GNU General Public License as published by the
8 * Free Software Foundation; either version 2, or (at your option) any
11 * GNU Zebra is distributed in the hope that it will be useful, but
12 * WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14 * General Public License for more details.
16 * You should have received a copy of the GNU General Public License
17 * along with GNU Zebra; see the file COPYING. If not, write to the Free
18 * Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
30 /* get interface MTU to use kvm_read */
32 if_kvm_get_mtu (struct interface
*ifp
)
36 unsigned long ifnetaddr
;
39 char ifname
[IFNAMSIZ
];
40 char tname
[INTERFACE_NAMSIZ
+ 1];
41 char buf
[_POSIX2_LINE_MAX
];
49 ifp
->mtu6
= ifp
->mtu
= -1;
51 kvmd
= kvm_openfiles (NULL
, NULL
, NULL
, O_RDONLY
, buf
);
58 ifnetaddr
= nl
[0].n_value
;
60 if (kvm_read(kvmd
, ifnetaddr
, (char *)&ifnetaddr
, sizeof ifnetaddr
) < 0)
68 if (kvm_read (kvmd
, ifnetaddr
, (char *)&ifnet
, sizeof ifnet
) < 0)
74 if (kvm_read (kvmd
, (u_long
)ifnet
.if_name
, ifname
, IFNAMSIZ
) < 0)
80 len
= snprintf (tname
, INTERFACE_NAMSIZ
+ 1,
81 "%s%d", ifname
, ifnet
.if_unit
);
83 if (strncmp (tname
, ifp
->name
, len
) == 0)
86 ifnetaddr
= (u_long
)ifnet
.if_next
;
96 ifp
->mtu6
= ifp
->mtu
= ifnet
.if_mtu
;