Page Menu
Home
FreeBSD
Search
Configure Global Search
Log In
Files
F144328175
D12554.id33600.diff
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Flag For Later
Award Token
Size
3 KB
Referenced Files
None
Subscribers
None
D12554.id33600.diff
View Options
Index: lib/libifconfig/libifconfig.h
===================================================================
--- lib/libifconfig/libifconfig.h
+++ lib/libifconfig/libifconfig.h
@@ -82,6 +82,8 @@
int ifconfig_unset_description(ifconfig_handle_t *h, const char *name);
int ifconfig_set_name(ifconfig_handle_t *h, const char *name,
const char *newname);
+int ifconfig_get_orig_name(ifconfig_handle_t *h, const char *ifname,
+ char **orig_name);
int ifconfig_set_mtu(ifconfig_handle_t *h, const char *name, const int mtu);
int ifconfig_get_mtu(ifconfig_handle_t *h, const char *name, int *mtu);
int ifconfig_set_metric(ifconfig_handle_t *h, const char *name,
Index: lib/libifconfig/libifconfig.c
===================================================================
--- lib/libifconfig/libifconfig.c
+++ lib/libifconfig/libifconfig.c
@@ -61,9 +61,43 @@
* $FreeBSD$
*/
+ /*
+ * Copyright 1996 Massachusetts Institute of Technology
+ *
+ * Permission to use, copy, modify, and distribute this software and
+ * its documentation for any purpose and without fee is hereby
+ * granted, provided that both the above copyright notice and this
+ * permission notice appear in all copies, that both the above
+ * copyright notice and this permission notice appear in all
+ * supporting documentation, and that the name of M.I.T. not be used
+ * in advertising or publicity pertaining to distribution of the
+ * software without specific, written prior permission. M.I.T. makes
+ * no representations about the suitability of this software for any
+ * purpose. It is provided "as is" without express or implied
+ * warranty.
+ *
+ * THIS SOFTWARE IS PROVIDED BY M.I.T. ``AS IS''. M.I.T. DISCLAIMS
+ * ALL EXPRESS OR IMPLIED WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+ * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
+ * SHALL M.I.T. BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+ * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
+ * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+ * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+ * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
+ * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
+ *
+ * $FreeBSD$
+ */
+
+#include <sys/types.h>
#include <sys/ioctl.h>
+#include <sys/sysctl.h>
#include <net/if.h>
+#include <net/if_mib.h>
#include <err.h>
#include <errno.h>
@@ -245,6 +279,67 @@
free(tmpname);
return (0);
+}
+
+int
+ifconfig_get_orig_name(ifconfig_handle_t *h, const char *ifname,
+ char **orig_name)
+{
+ struct ifmibdata ifmd;
+ size_t len;
+ int name[6];
+ int i, maxifno;
+
+ name[0] = CTL_NET;
+ name[1] = PF_LINK;
+ name[2] = NETLINK_GENERIC;
+ name[3] = IFMIB_SYSTEM;
+ name[4] = IFMIB_IFCOUNT;
+
+ len = sizeof maxifno;
+ if (sysctl(name, 5, &maxifno, &len, 0, 0) < 0) {
+ h->error.errtype = OTHER;
+ h->error.errcode = errno;
+ return (-1);
+ }
+
+ name[3] = IFMIB_IFDATA;
+ name[5] = IFDATA_GENERAL;
+ for (i = 1; i <= maxifno; i++) {
+ len = sizeof ifmd;
+ name[4] = i;
+ if (sysctl(name, 6, &ifmd, &len, 0, 0) < 0) {
+ if (errno == ENOENT)
+ continue;
+
+ goto fail;
+ }
+
+ if (strncmp(ifmd.ifmd_name, ifname, IFNAMSIZ) != 0)
+ continue;
+
+ len = 0;
+ name[5] = IFDATA_DRIVERNAME;
+ if (sysctl(name, 6, NULL, &len, 0, 0) < 0)
+ goto fail;
+
+ *orig_name = malloc(len);
+ if (*orig_name == NULL)
+ goto fail;
+
+ if (sysctl(name, 6, *orig_name, &len, 0, 0) < 0) {
+ free(*orig_name);
+ *orig_name = NULL;
+ goto fail;
+ }
+
+ return (0);
+ }
+
+fail:
+ h->error.errtype = OTHER;
+ h->error.errcode = (i <= maxifno) ? errno : ENOENT;
+ return (-1);
}
int
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sun, Feb 8, 9:14 PM (7 h, 1 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
28498336
Default Alt Text
D12554.id33600.diff (3 KB)
Attached To
Mode
D12554: libifconfig: allow to get original interface name via ifconfig_get_orig_name()
Attached
Detach File
Event Timeline
Log In to Comment