Diff for /embedtools/src/get1steth.c between versions 1.3 and 1.5

version 1.3, 2012/07/22 22:46:47 version 1.5, 2014/02/05 15:44:06
Line 12  terms: Line 12  terms:
 All of the documentation and software included in the ELWIX and AITNET  All of the documentation and software included in the ELWIX and AITNET
 Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>  Releases is copyrighted by ELWIX - Sofia/Bulgaria <info@elwix.org>
   
Copyright 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012Copyright 2004 - 2014
         by Michael Pounov <misho@elwix.org>.  All rights reserved.          by Michael Pounov <misho@elwix.org>.  All rights reserved.
   
 Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
Line 47  SUCH DAMAGE. Line 47  SUCH DAMAGE.
 #include "get1steth.h"  #include "get1steth.h"
   
   
char szIface[MAX_STR];char szIface[STRSIZ];
 int Verbose;  int Verbose;
 extern char compiled[], compiledby[], compilehost[];  extern char compiled[], compiledby[], compilehost[];
   
   
static void Usage()static void
 Usage()
 {  {
         printf("-= GET_FIRST_ETHERNET =- Get First Ethernet Interface tool\n"          printf("-= GET_FIRST_ETHERNET =- Get First Ethernet Interface tool\n"
                 "=== %s === %s@%s ===\n\n"                  "=== %s === %s@%s ===\n\n"
Line 63  static void Usage() Line 64  static void Usage()
 }  }
   
 #ifdef HAVE_KLDNEXT  #ifdef HAVE_KLDNEXT
static int kldLoad()static int
 kldLoad()
 {  {
         struct module_stat mstat;          struct module_stat mstat;
         register int i, j;          register int i, j;
Line 93  static int kldLoad() Line 95  static int kldLoad()
   
 // -------------------------------  // -------------------------------
   
int main(int argc, char **argv)int
 main(int argc, char **argv)
 {  {
         char ch, GetOnly = 0;          char ch, GetOnly = 0;
         struct ifaddrs *ifa, *ifp;          struct ifaddrs *ifa, *ifp;
Line 124  int main(int argc, char **argv) Line 127  int main(int argc, char **argv)
         openlog("get1steth", LOG_CONS | LOG_PERROR, LOG_USER);          openlog("get1steth", LOG_CONS | LOG_PERROR, LOG_USER);
   
         if (argc) {          if (argc) {
                strlcpy(szIface, *argv, MAX_STR);                strlcpy(szIface, *argv, sizeof szIface);
                 VERB(1) syslog(LOG_NOTICE, "Info:: Get CUSTOM first interface %s\n", szIface);                  VERB(1) syslog(LOG_NOTICE, "Info:: Get CUSTOM first interface %s\n", szIface);
         } else {          } else {
                 s = socket(PF_INET, SOCK_DGRAM, 0);                  s = socket(PF_INET, SOCK_DGRAM, 0);
Line 149  int main(int argc, char **argv) Line 152  int main(int argc, char **argv)
                                 }                                  }
   
                                 if (IFM_ETHER == IFM_TYPE(ifmr.ifm_current)) {                                  if (IFM_ETHER == IFM_TYPE(ifmr.ifm_current)) {
                                        strlcpy(szIface, ifp->ifa_name, MAX_STR);                                        strlcpy(szIface, ifp->ifa_name, sizeof szIface);
                                         sdl = (struct sockaddr_dl*) ifp->ifa_addr;                                          sdl = (struct sockaddr_dl*) ifp->ifa_addr;
                                         VERB(2) syslog(LOG_NOTICE, "Info:: Get first interface=%s MAC=%s\n", szIface,                                           VERB(2) syslog(LOG_NOTICE, "Info:: Get first interface=%s MAC=%s\n", szIface, 
                                                         ether_ntoa((struct ether_addr*) LLADDR(sdl)));                                                          ether_ntoa((struct ether_addr*) LLADDR(sdl)));
Line 184  int main(int argc, char **argv) Line 187  int main(int argc, char **argv)
                 VERB(3) syslog(LOG_NOTICE, "VLAN module ... %s\n", s ? "Loaded" : "Already loaded");                  VERB(3) syslog(LOG_NOTICE, "VLAN module ... %s\n", s ? "Loaded" : "Already loaded");
 #endif  #endif
   
        // create vlan        s = socket(PF_INET, SOCK_DGRAM, 0);
         if (-1 == s) {
                 syslog(LOG_ERR, "Error:: socket(INET) #%d - %s\n", errno, strerror(errno));
                 closelog();
                 return 2;
         }
 
         /* up parent interface */
         memset(&ifr, 0, sizeof ifr);          memset(&ifr, 0, sizeof ifr);
           strlcpy(ifr.ifr_name, szIface, IFNAMSIZ);
           ifr.ifr_flags |= IFF_UP;
   
           if (ioctl(s, SIOCSIFFLAGS, &ifr) == -1 && errno != EEXIST) {
                   syslog(LOG_ERR, "Error:: UP interface=%s ioctl(SIOCSIFFLAGS) #%d - %s\n", 
                                   szIface, errno, strerror(errno));
                   close(s);
                   return 2;
           }
   
           /* create vlan */
           memset(&ifr, 0, sizeof ifr);
         strlcpy(vlr.vlr_parent, szIface, IFNAMSIZ);          strlcpy(vlr.vlr_parent, szIface, IFNAMSIZ);
         vlr.vlr_tag = MGMT_VTAG;          vlr.vlr_tag = MGMT_VTAG;
   
         strlcpy(ifr.ifr_name, MGMT_IFACE, IFNAMSIZ);          strlcpy(ifr.ifr_name, MGMT_IFACE, IFNAMSIZ);
         ifr.ifr_data = (void *) &vlr;          ifr.ifr_data = (void *) &vlr;
   
         s = socket(PF_INET, SOCK_DGRAM, 0);  
         if (-1 == s) {  
                 syslog(LOG_ERR, "Error:: socket(INET) #%d - %s\n", errno, strerror(errno));  
                 closelog();  
                 return 2;  
         }  
 #ifdef SIOCIFCREATE2  #ifdef SIOCIFCREATE2
         if (ioctl(s, SIOCIFCREATE2, &ifr) == -1 && errno != EEXIST) {          if (ioctl(s, SIOCIFCREATE2, &ifr) == -1 && errno != EEXIST) {
 #else  #else
Line 211  int main(int argc, char **argv) Line 227  int main(int argc, char **argv)
   
         memset(&ifra, 0, sizeof ifra);          memset(&ifra, 0, sizeof ifra);
 #if defined(__FreeBSD__)  #if defined(__FreeBSD__)
        // rename iface        /* rename iface */
         VERB(2) syslog(LOG_NOTICE, "Info:: Created interface=%s\n", MGMT_IFACE);          VERB(2) syslog(LOG_NOTICE, "Info:: Created interface=%s\n", MGMT_IFACE);
         ifr.ifr_data = MGMT_NAME;          ifr.ifr_data = MGMT_NAME;
         if (errno != EEXIST && ioctl(s, SIOCSIFNAME, &ifr) == -1) {          if (errno != EEXIST && ioctl(s, SIOCSIFNAME, &ifr) == -1) {
Line 226  int main(int argc, char **argv) Line 242  int main(int argc, char **argv)
         strlcpy(ifra.ifra_name, MGMT_IFACE, IFNAMSIZ);          strlcpy(ifra.ifra_name, MGMT_IFACE, IFNAMSIZ);
 #endif  #endif
   
        // assign address & up        /* assign address & up */
         sin = (struct sockaddr_in*) &ifra.ifra_addr;          sin = (struct sockaddr_in*) &ifra.ifra_addr;
         sin->sin_len = sizeof ifra.ifra_addr;          sin->sin_len = sizeof ifra.ifra_addr;
         sin->sin_family = AF_INET;          sin->sin_family = AF_INET;

Removed from v.1.3  
changed lines
  Added in v.1.5


FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>