From owner-svn-ports-head@FreeBSD.ORG Wed Oct 22 05:34:36 2014 Return-Path: Delivered-To: svn-ports-head@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTPS id 8D9AB65E; Wed, 22 Oct 2014 05:34:36 +0000 (UTC) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:1900:2254:2068::e6a:0]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (Client did not present a certificate) by mx1.freebsd.org (Postfix) with ESMTPS id 78E626B2; Wed, 22 Oct 2014 05:34:36 +0000 (UTC) Received: from svn.freebsd.org ([127.0.1.70]) by svn.freebsd.org (8.14.9/8.14.9) with ESMTP id s9M5Yav1035110; Wed, 22 Oct 2014 05:34:36 GMT (envelope-from pi@FreeBSD.org) Received: (from pi@localhost) by svn.freebsd.org (8.14.9/8.14.9/Submit) id s9M5YZKJ035104; Wed, 22 Oct 2014 05:34:35 GMT (envelope-from pi@FreeBSD.org) Message-Id: <201410220534.s9M5YZKJ035104@svn.freebsd.org> X-Authentication-Warning: svn.freebsd.org: pi set sender to pi@FreeBSD.org using -f From: Kurt Jaeger Date: Wed, 22 Oct 2014 05:34:35 +0000 (UTC) To: ports-committers@freebsd.org, svn-ports-all@freebsd.org, svn-ports-head@freebsd.org Subject: svn commit: r371342 - in head/net/macchanger: . files X-SVN-Group: ports-head MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-ports-head@freebsd.org X-Mailman-Version: 2.1.18-1 Precedence: list List-Id: SVN commit messages for the ports tree for head List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 22 Oct 2014 05:34:36 -0000 Author: pi Date: Wed Oct 22 05:34:34 2014 New Revision: 371342 URL: https://svnweb.freebsd.org/changeset/ports/371342 QAT: https://qat.redports.org/buildarchive/r371342/ Log: New port: net/macchanger GNU MAC Changer is an utility that makes the maniputation of MAC addresses of network interfaces easier. WWW: http://www.gnu.org/software/macchanger PR: 187363 Submitted by: clutton@zoho.com Added: head/net/macchanger/ head/net/macchanger/Makefile (contents, props changed) head/net/macchanger/distinfo (contents, props changed) head/net/macchanger/files/ head/net/macchanger/files/patch-configure.ac (contents, props changed) head/net/macchanger/files/patch-src_main.c (contents, props changed) head/net/macchanger/files/patch-src_netinfo.c (contents, props changed) head/net/macchanger/pkg-descr (contents, props changed) Added: head/net/macchanger/Makefile ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/macchanger/Makefile Wed Oct 22 05:34:34 2014 (r371342) @@ -0,0 +1,26 @@ +# $FreeBSD$ + +PORTNAME= macchanger +PORTVERSION= 1.7.0 +CATEGORIES= net + +MAINTAINER= clutton@zoho.com +COMMENT= GNU MAC Changer + +LICENSE= GPLv3 + +USE_GITHUB= true +GH_ACCOUNT= alobbs +GH_COMMIT= f4f66e1 + +GNU_CONFIGURE= yes +USE_AUTOTOOLS= aclocal autoconf automake autoheader +AUTOMAKE_ARGS= --add-missing + +INFO= macchanger + +PLIST_FILES= bin/${PORTNAME} man/man1/${PORTNAME}.1.gz \ + %%DATADIR%%/OUI.list %%DATADIR%%/wireless.list +PLIST_DIRS= %%DATADIR%% + +.include Added: head/net/macchanger/distinfo ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/macchanger/distinfo Wed Oct 22 05:34:34 2014 (r371342) @@ -0,0 +1,2 @@ +SHA256 (macchanger-1.7.0.tar.gz) = ec916fa592c445c4c48d420ae0ad5adb942b0a6009d96394d0555fcb967965aa +SIZE (macchanger-1.7.0.tar.gz) = 306369 Added: head/net/macchanger/files/patch-configure.ac ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/macchanger/files/patch-configure.ac Wed Oct 22 05:34:34 2014 (r371342) @@ -0,0 +1,49 @@ +--- configure.ac 2014-01-01 18:57:39.000000000 +0200 ++++ configure.ac 2014-03-19 02:43:40.440612214 +0200 +@@ -9,6 +9,46 @@ + + AC_PROG_INSTALL + AC_PROG_CC ++AC_CANONICAL_HOST ++ ++case "$host" in ++*-*-linux*) ++ AC_DEFINE([LLADDR(s)], [s->sll_addr], [the link level address]) ++;; ++*-*-freebsd*) ++ AC_DEFINE([sockaddr_ll], [sockaddr_dl], [the socket link structures]) ++ AC_DEFINE([sll_family], [sdl_family], [the socket family member]) ++ AC_DEFINE([AF_PACKET], [AF_LINK], [the domain name]) ++ AC_DEFINE([ifr_hwaddr], [ifr_addr], [the address member]) ++ AC_DEFINE([SIOCSIFHWADDR], [SIOCSIFLLADDR], [the ioctl call]) ++;; ++esac ++ ++AC_MSG_CHECKING([if sockaddr has the sa_len member]) ++AC_LINK_IFELSE( ++ [AC_LANG_PROGRAM( ++ [[ #include ]], ++ [[ struct sockaddr sock; return (sock.sa_len); ]])], ++ [AC_DEFINE([HAVE_SOCKADDR_SA_LEN], [1], ++ [socket address structures have length fields]) ++]) ++ ++AC_CHECK_HEADER([ifaddrs.h], ,[AC_MSG_ERROR( ++ [*** ifaddrs.h missing - please install first or check config.log ***])]) ++ ++AC_CHECK_HEADERS([linux/if_packet.h net/if_dl.h]) ++ ++if test "x$ac_cv_header_linux_if_packet_h" = "xyes" ; then ++ AC_DEFINE([HAVE_IF_PACKET], [1], ++ [The Linux if_packet.h header found]) ++elif test "x$ac_cv_header_net_if_dl_h" = "xyes" ; then ++ AC_DEFINE([HAVE_IF_DL], [1], ++ [The BSD if_dl.h header found]) ++else ++ AC_MSG_ERROR([*** sockaddr_* missing - please install first or check config.log ***]) ++fi ++ ++AC_CHECK_HEADER(linux/ethtool.h, AC_DEFINE([HAVE_ETHTOOL], [1], [Linux ethernet headers found]), ) + + AC_OUTPUT([ + Makefile Added: head/net/macchanger/files/patch-src_main.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/macchanger/files/patch-src_main.c Wed Oct 22 05:34:34 2014 (r371342) @@ -0,0 +1,166 @@ +--- src/main.c 2014-01-01 11:23:39.000000000 +0200 ++++ src/main.c 2014-10-17 12:15:02.254848839 +0300 +@@ -40,9 +40,6 @@ + #include "maclist.h" + #include "netinfo.h" + +-#define EXIT_OK 0 +-#define EXIT_ERROR 1 +- + static void + print_help (void) + { +@@ -54,7 +51,9 @@ + " -e, --ending Don't change the vendor bytes\n" + " -a, --another Set random vendor MAC of the same kind\n" + " -A Set random vendor MAC of any kind\n" ++#if defined(HAVE_ETHTOOL) + " -p, --permanent Reset to original, permanent hardware MAC\n" ++#endif + " -r, --random Set fully random MAC\n" + " -l, --list[=keyword] Print known vendors\n" + " -b, --bia Pretend to be a burned-in-address\n" +@@ -116,7 +115,9 @@ + char ending = 0; + char another_any = 0; + char another_same = 0; ++#if defined(HAVE_ETHTOOL) + char permanent = 0; ++#endif + char print_list = 0; + char show = 0; + char set_bia = 0; +@@ -131,7 +132,9 @@ + {"ending", no_argument, NULL, 'e'}, + {"endding", no_argument, NULL, 'e'}, /* kept for backwards compatibility */ + {"another", no_argument, NULL, 'a'}, ++#if defined(HAVE_ETHTOOL) + {"permanent", no_argument, NULL, 'p'}, ++#endif + {"show", no_argument, NULL, 's'}, + {"another_any", no_argument, NULL, 'A'}, + {"bia", no_argument, NULL, 'b'}, +@@ -142,7 +145,9 @@ + + net_info_t *net; + mac_t *mac; ++#if defined(HAVE_ETHTOOL) + mac_t *mac_permanent; ++#endif + mac_t *mac_faked; + char *device_name; + int val; +@@ -158,7 +163,7 @@ + "This is free software; see the source for copying conditions. There is NO\n" + "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n", + VERSION); +- exit (EXIT_OK); ++ exit (EXIT_SUCCESS); + break; + case 'l': + print_list = 1; +@@ -182,9 +187,11 @@ + case 'A': + another_any = 1; + break; ++#if defined(HAVE_ETHTOOL) + case 'p': + permanent = 1; + break; ++#endif + case 'm': + set_mac = optarg; + break; +@@ -192,26 +199,26 @@ + case '?': + default: + print_help(); +- exit (EXIT_OK); ++ exit (EXIT_SUCCESS); + break; + } + } + + /* Read the MAC lists */ + if (mc_maclist_init() < 0) { +- exit (EXIT_ERROR); ++ exit (EXIT_FAILURE); + } + + /* Print list? */ + if (print_list) { + mc_maclist_print(search_word); +- exit (EXIT_OK); ++ exit (EXIT_SUCCESS); + } + + /* Get device name argument */ + if (optind >= argc) { + print_usage(); +- exit (EXIT_OK); ++ exit (EXIT_SUCCESS); + } + device_name = argv[optind]; + +@@ -220,10 +227,12 @@ + + /* Read the MAC */ + if ((net = mc_net_info_new(device_name)) == NULL) { +- exit (EXIT_ERROR); ++ exit (EXIT_FAILURE); + } + mac = mc_net_info_get_mac(net); ++#if defined(HAVE_ETHTOOL) + mac_permanent = mc_net_info_get_permanent_mac(net); ++#endif + + /* --bia can only be used with --random */ + if (set_bia && !random) { +@@ -232,16 +241,18 @@ + + /* Print the current MAC info */ + print_mac ("Current MAC: ", mac); ++#if defined(HAVE_ETHTOOL) + print_mac ("Permanent MAC: ", mac_permanent); ++#endif + + /* Change the MAC */ + mac_faked = mc_mac_dup (mac); + + if (show) { +- exit (EXIT_OK); ++ exit (EXIT_SUCCESS); + } else if (set_mac) { + if (mc_mac_read_string (mac_faked, set_mac) < 0) { +- exit (EXIT_ERROR); ++ exit (EXIT_FAILURE); + } + } else if (random) { + mc_mac_random (mac_faked, 6, set_bia); +@@ -254,10 +265,12 @@ + } else if (another_any) { + mc_maclist_set_random_vendor(mac_faked, mac_is_anykind); + mc_mac_random (mac_faked, 3, 1); ++#if defined(HAVE_ETHTOOL) + } else if (permanent) { + mac_faked = mc_mac_dup (mac_permanent); ++#endif + } else { +- exit (EXIT_OK); /* default to show */ ++ exit (EXIT_SUCCESS); /* default to show */ + } + + /* Set the new MAC */ +@@ -279,9 +292,11 @@ + /* Memory free */ + mc_mac_free (mac); + mc_mac_free (mac_faked); ++#if defined(HAVE_ETHTOOL) + mc_mac_free (mac_permanent); ++#endif + mc_net_info_free (net); + mc_maclist_free(); + +- return (ret == 0) ? EXIT_OK : EXIT_ERROR; ++ return (ret == 0) ? EXIT_SUCCESS : EXIT_FAILURE; + } Added: head/net/macchanger/files/patch-src_netinfo.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/macchanger/files/patch-src_netinfo.c Wed Oct 22 05:34:34 2014 (r371342) @@ -0,0 +1,124 @@ +--- src/netinfo.c 2014-01-01 19:10:25.000000000 +0200 ++++ src/netinfo.c 2014-10-22 05:49:50.129320393 +0300 +@@ -23,14 +23,31 @@ + * USA + */ + ++#ifdef HAVE_CONFIG_H ++# include ++#endif ++ + #include + #include + #include + #include ++#include + #include + +-#include +-#include ++#include ++#include ++#include ++ ++#if defined(HAVE_IF_PACKET) ++# include ++#elif defined(HAVE_IF_DL) ++# include ++#endif ++ ++#if defined(HAVE_ETHTOOL) ++# include ++# include ++#endif + + #include "netinfo.h" + +@@ -49,7 +66,7 @@ + + strncpy (new->dev.ifr_name, device, sizeof(new->dev.ifr_name)); + new->dev.ifr_name[sizeof(new->dev.ifr_name)-1] = '\0'; +- if (ioctl(new->sock, SIOCGIFHWADDR, &new->dev) < 0) { ++ if (if_nametoindex(device) == 0) { + perror ("[ERROR] Set device name"); + free(new); + return NULL; +@@ -66,29 +83,55 @@ + free(net); + } + +- + mac_t * + mc_net_info_get_mac (const net_info_t *net) + { +- int i; +- mac_t *new = (mac_t *) malloc (sizeof(mac_t)); ++ int i; ++ mac_t *mac = (mac_t *) malloc (sizeof(mac_t)); ++ u_char *lladr; + +- for (i=0; i<6; i++) { +- new->byte[i] = net->dev.ifr_hwaddr.sa_data[i] & 0xFF; +- } ++ struct ifaddrs *ifap, *ifa; ++ struct sockaddr_ll *sdl; + +- return new; +-} ++ if (getifaddrs(&ifap) == 0) { ++ for (ifa = ifap; ifa; ifa = ifa->ifa_next) { ++ ++ sdl = (struct sockaddr_ll *) ifa->ifa_addr; ++ ++ if (strcmp(ifa->ifa_name, net->dev.ifr_name) != 0) ++ continue; + ++ if (!sdl && sdl->sll_family != AF_PACKET) ++ continue; ++ ++ lladr = (u_char *) LLADDR(sdl); ++ for (i=0; i<6; i++) ++ mac->byte[i] = lladr[i] & 0xFF; ++ break; ++ } ++ freeifaddrs(ifap); ++ } else ++ perror("getifaddrs"); ++ ++ return mac; ++} + + int + mc_net_info_set_mac (net_info_t *net, const mac_t *mac) + { + int i; ++#if defined(HAVE_ETHTOOL) ++ if (ioctl(net->sock, SIOCGIFHWADDR, &net->dev) < 0) { ++ perror ("[ERROR] Set ifreq structure"); ++ return -1; ++ } ++#elif defined(HAVE_SOCKADDR_SA_LEN) ++ net->dev.ifr_addr.sa_family = AF_PACKET; ++ net->dev.ifr_addr.sa_len = ETHER_ADDR_LEN; ++#endif + +- for (i=0; i<6; i++) { ++ for (i=0; i<6; i++) + net->dev.ifr_hwaddr.sa_data[i] = mac->byte[i]; +- } + + if (ioctl(net->sock, SIOCSIFHWADDR, &net->dev) < 0) { + perror ("[ERROR] Could not change MAC: interface up or insufficient permissions"); +@@ -98,6 +141,7 @@ + return 0; + } + ++#if defined(HAVE_ETHTOOL) + mac_t * + mc_net_info_get_permanent_mac (const net_info_t *net) + { +@@ -126,3 +170,4 @@ + free(epa); + return newmac; + } ++#endif Added: head/net/macchanger/pkg-descr ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ head/net/macchanger/pkg-descr Wed Oct 22 05:34:34 2014 (r371342) @@ -0,0 +1,4 @@ +GNU MAC Changer is an utility that makes the maniputation of MAC addresses of +network interfaces easier. + +WWW: http://www.gnu.org/software/macchanger