Merge branch 'sigar-1.6-dos2unix'
This commit is contained in:
		
						commit
						d573932902
					
				
							
								
								
									
										208
									
								
								EXCEPTIONS
									
									
									
									
									
								
							
							
						
						
									
										208
									
								
								EXCEPTIONS
									
									
									
									
									
								
							@ -1,104 +1,104 @@
 | 
			
		||||
Hyperic FLOSS License Exception
 | 
			
		||||
 | 
			
		||||
The Hyperic Exception for Free/Libre and Open Source
 | 
			
		||||
Software-only Applications Using Hyperic SIGAR Libraries (the
 | 
			
		||||
"FLOSS Exception").
 | 
			
		||||
 | 
			
		||||
Version 0.1, September 6, 2008
 | 
			
		||||
 | 
			
		||||
Exception Intent
 | 
			
		||||
 | 
			
		||||
We want specified Free/Libre and Open Source Software (``FLOSS'')
 | 
			
		||||
applications to be able to use specified GPL-licensed Hyperic SIGAR
 | 
			
		||||
libraries (the ``Program'') despite the fact that not all FLOSS
 | 
			
		||||
licenses are compatible with version 2 of the GNU General Public
 | 
			
		||||
License (the ``GPL'').
 | 
			
		||||
 | 
			
		||||
Legal Terms and Conditions
 | 
			
		||||
 | 
			
		||||
As a special exception to the terms and conditions of version 2.0
 | 
			
		||||
of the GPL:
 | 
			
		||||
 | 
			
		||||
 1. You are free to distribute a Derivative Work that is formed
 | 
			
		||||
    entirely from the Program and one or more works (each, a
 | 
			
		||||
    "FLOSS Work") licensed under one or more of the licenses
 | 
			
		||||
    listed below in section 1, as long as:
 | 
			
		||||
      a. You obey the GPL in all respects for the Program and the
 | 
			
		||||
         Derivative Work, except for identifiable sections of the
 | 
			
		||||
         Derivative Work which are not derived from the Program,
 | 
			
		||||
         and which can reasonably be considered independent and
 | 
			
		||||
         separate works in themselves,
 | 
			
		||||
      b. all identifiable sections of the Derivative Work which
 | 
			
		||||
         are not derived from the Program, and which can
 | 
			
		||||
         reasonably be considered independent and separate works
 | 
			
		||||
         in themselves,
 | 
			
		||||
           i. are distributed subject to one of the FLOSS licenses
 | 
			
		||||
              listed below, and
 | 
			
		||||
          ii. the object code or executable form of those sections
 | 
			
		||||
              are accompanied by the complete corresponding
 | 
			
		||||
              machine-readable source code for those sections on
 | 
			
		||||
              the same medium and under the same FLOSS license as
 | 
			
		||||
              the corresponding object code or executable forms of
 | 
			
		||||
              those sections, and
 | 
			
		||||
      c. any works which are aggregated with the Program or with a
 | 
			
		||||
         Derivative Work on a volume of a storage or distribution
 | 
			
		||||
         medium in accordance with the GPL, can reasonably be
 | 
			
		||||
         considered independent and separate works in themselves
 | 
			
		||||
         which are not derivatives of either the Program, a
 | 
			
		||||
         Derivative Work or a FLOSS Work.
 | 
			
		||||
    If the above conditions are not met, then the Program may only
 | 
			
		||||
    be copied, modified, distributed or used under the terms and
 | 
			
		||||
    conditions of the GPL or another valid licensing option from
 | 
			
		||||
    Hyperic, Inc.
 | 
			
		||||
 | 
			
		||||
 2. FLOSS License List
 | 
			
		||||
 | 
			
		||||
License name Version(s)/Copyright Date
 | 
			
		||||
Apache Software License 1.0/1.1/2.0
 | 
			
		||||
Artistic license From Perl 5.8.0
 | 
			
		||||
BSD license "July 22 1999"
 | 
			
		||||
Eclipse Public License 1.0
 | 
			
		||||
Mozilla Public License (MPL) 1.0/1.1
 | 
			
		||||
Open Software License 2.0
 | 
			
		||||
PHP License 3.0
 | 
			
		||||
Python Software Foundation License 2.1.1
 | 
			
		||||
 | 
			
		||||
    Due to the many variants of some of the above licenses, we
 | 
			
		||||
    require that any version follow the 2003 version of the Free
 | 
			
		||||
    Software Foundation's Free Software Definition
 | 
			
		||||
    (http://www.gnu.org/philosophy/free-sw.html) or version 1.9 of
 | 
			
		||||
    the Open Source Definition by the Open Source Initiative
 | 
			
		||||
    (http://www.opensource.org/docs/definition.php).
 | 
			
		||||
 | 
			
		||||
 3. Definitions
 | 
			
		||||
 | 
			
		||||
      a. Terms used, but not defined, herein shall have the
 | 
			
		||||
         meaning provided in the GPL.
 | 
			
		||||
      b. Derivative Work means a derivative work under copyright
 | 
			
		||||
         law.
 | 
			
		||||
 | 
			
		||||
 4. Applicability: This FLOSS Exception applies to all Programs
 | 
			
		||||
    that contain a notice placed by Hyperic, Inc. saying that the
 | 
			
		||||
    Program may be distributed under the terms of this FLOSS
 | 
			
		||||
    Exception. If you create or distribute a work which is a
 | 
			
		||||
    Derivative Work of both the Program and any other work
 | 
			
		||||
    licensed under the GPL, then this FLOSS Exception is not
 | 
			
		||||
    available for that work; thus, you must remove the FLOSS
 | 
			
		||||
    Exception notice from that work and comply with the GPL in all
 | 
			
		||||
    respects, including by retaining all GPL notices. You may
 | 
			
		||||
    choose to redistribute a copy of the Program exclusively under
 | 
			
		||||
    the terms of the GPL by removing the FLOSS Exception notice
 | 
			
		||||
    from that copy of the Program, provided that the copy has
 | 
			
		||||
    never been modified by you or any third party.
 | 
			
		||||
 | 
			
		||||
Appendix A. Qualified Libraries and Packages
 | 
			
		||||
 | 
			
		||||
The following is a non-exhaustive list of libraries and packages
 | 
			
		||||
which are covered by the FLOSS License Exception. Please note that
 | 
			
		||||
this appendix is provided merely as an additional service to
 | 
			
		||||
specific FLOSS projects wishing to simplify licensing information
 | 
			
		||||
for their users. Compliance with one of the licenses noted under
 | 
			
		||||
the "FLOSS license list" section remains a prerequisite.
 | 
			
		||||
 | 
			
		||||
Package Name                  Qualifying License and Version
 | 
			
		||||
Apache Portable Runtime (APR) Apache Software License 2.0
 | 
			
		||||
Hyperic FLOSS License Exception
 | 
			
		||||
 | 
			
		||||
The Hyperic Exception for Free/Libre and Open Source
 | 
			
		||||
Software-only Applications Using Hyperic SIGAR Libraries (the
 | 
			
		||||
"FLOSS Exception").
 | 
			
		||||
 | 
			
		||||
Version 0.1, September 6, 2008
 | 
			
		||||
 | 
			
		||||
Exception Intent
 | 
			
		||||
 | 
			
		||||
We want specified Free/Libre and Open Source Software (``FLOSS'')
 | 
			
		||||
applications to be able to use specified GPL-licensed Hyperic SIGAR
 | 
			
		||||
libraries (the ``Program'') despite the fact that not all FLOSS
 | 
			
		||||
licenses are compatible with version 2 of the GNU General Public
 | 
			
		||||
License (the ``GPL'').
 | 
			
		||||
 | 
			
		||||
Legal Terms and Conditions
 | 
			
		||||
 | 
			
		||||
As a special exception to the terms and conditions of version 2.0
 | 
			
		||||
of the GPL:
 | 
			
		||||
 | 
			
		||||
 1. You are free to distribute a Derivative Work that is formed
 | 
			
		||||
    entirely from the Program and one or more works (each, a
 | 
			
		||||
    "FLOSS Work") licensed under one or more of the licenses
 | 
			
		||||
    listed below in section 1, as long as:
 | 
			
		||||
      a. You obey the GPL in all respects for the Program and the
 | 
			
		||||
         Derivative Work, except for identifiable sections of the
 | 
			
		||||
         Derivative Work which are not derived from the Program,
 | 
			
		||||
         and which can reasonably be considered independent and
 | 
			
		||||
         separate works in themselves,
 | 
			
		||||
      b. all identifiable sections of the Derivative Work which
 | 
			
		||||
         are not derived from the Program, and which can
 | 
			
		||||
         reasonably be considered independent and separate works
 | 
			
		||||
         in themselves,
 | 
			
		||||
           i. are distributed subject to one of the FLOSS licenses
 | 
			
		||||
              listed below, and
 | 
			
		||||
          ii. the object code or executable form of those sections
 | 
			
		||||
              are accompanied by the complete corresponding
 | 
			
		||||
              machine-readable source code for those sections on
 | 
			
		||||
              the same medium and under the same FLOSS license as
 | 
			
		||||
              the corresponding object code or executable forms of
 | 
			
		||||
              those sections, and
 | 
			
		||||
      c. any works which are aggregated with the Program or with a
 | 
			
		||||
         Derivative Work on a volume of a storage or distribution
 | 
			
		||||
         medium in accordance with the GPL, can reasonably be
 | 
			
		||||
         considered independent and separate works in themselves
 | 
			
		||||
         which are not derivatives of either the Program, a
 | 
			
		||||
         Derivative Work or a FLOSS Work.
 | 
			
		||||
    If the above conditions are not met, then the Program may only
 | 
			
		||||
    be copied, modified, distributed or used under the terms and
 | 
			
		||||
    conditions of the GPL or another valid licensing option from
 | 
			
		||||
    Hyperic, Inc.
 | 
			
		||||
 | 
			
		||||
 2. FLOSS License List
 | 
			
		||||
 | 
			
		||||
License name Version(s)/Copyright Date
 | 
			
		||||
Apache Software License 1.0/1.1/2.0
 | 
			
		||||
Artistic license From Perl 5.8.0
 | 
			
		||||
BSD license "July 22 1999"
 | 
			
		||||
Eclipse Public License 1.0
 | 
			
		||||
Mozilla Public License (MPL) 1.0/1.1
 | 
			
		||||
Open Software License 2.0
 | 
			
		||||
PHP License 3.0
 | 
			
		||||
Python Software Foundation License 2.1.1
 | 
			
		||||
 | 
			
		||||
    Due to the many variants of some of the above licenses, we
 | 
			
		||||
    require that any version follow the 2003 version of the Free
 | 
			
		||||
    Software Foundation's Free Software Definition
 | 
			
		||||
    (http://www.gnu.org/philosophy/free-sw.html) or version 1.9 of
 | 
			
		||||
    the Open Source Definition by the Open Source Initiative
 | 
			
		||||
    (http://www.opensource.org/docs/definition.php).
 | 
			
		||||
 | 
			
		||||
 3. Definitions
 | 
			
		||||
 | 
			
		||||
      a. Terms used, but not defined, herein shall have the
 | 
			
		||||
         meaning provided in the GPL.
 | 
			
		||||
      b. Derivative Work means a derivative work under copyright
 | 
			
		||||
         law.
 | 
			
		||||
 | 
			
		||||
 4. Applicability: This FLOSS Exception applies to all Programs
 | 
			
		||||
    that contain a notice placed by Hyperic, Inc. saying that the
 | 
			
		||||
    Program may be distributed under the terms of this FLOSS
 | 
			
		||||
    Exception. If you create or distribute a work which is a
 | 
			
		||||
    Derivative Work of both the Program and any other work
 | 
			
		||||
    licensed under the GPL, then this FLOSS Exception is not
 | 
			
		||||
    available for that work; thus, you must remove the FLOSS
 | 
			
		||||
    Exception notice from that work and comply with the GPL in all
 | 
			
		||||
    respects, including by retaining all GPL notices. You may
 | 
			
		||||
    choose to redistribute a copy of the Program exclusively under
 | 
			
		||||
    the terms of the GPL by removing the FLOSS Exception notice
 | 
			
		||||
    from that copy of the Program, provided that the copy has
 | 
			
		||||
    never been modified by you or any third party.
 | 
			
		||||
 | 
			
		||||
Appendix A. Qualified Libraries and Packages
 | 
			
		||||
 | 
			
		||||
The following is a non-exhaustive list of libraries and packages
 | 
			
		||||
which are covered by the FLOSS License Exception. Please note that
 | 
			
		||||
this appendix is provided merely as an additional service to
 | 
			
		||||
specific FLOSS projects wishing to simplify licensing information
 | 
			
		||||
for their users. Compliance with one of the licenses noted under
 | 
			
		||||
the "FLOSS license list" section remains a prerequisite.
 | 
			
		||||
 | 
			
		||||
Package Name                  Qualifying License and Version
 | 
			
		||||
Apache Portable Runtime (APR) Apache Software License 2.0
 | 
			
		||||
 | 
			
		||||
@ -16,54 +16,54 @@
 | 
			
		||||
 * USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.hyperic.jni;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
 | 
			
		||||
import org.apache.tools.ant.BuildException;
 | 
			
		||||
import org.apache.tools.ant.taskdefs.Copy;
 | 
			
		||||
 | 
			
		||||
public class CopyDependsTask extends Copy {
 | 
			
		||||
 | 
			
		||||
    private File depends;
 | 
			
		||||
 | 
			
		||||
    protected void validateAttributes()
 | 
			
		||||
        throws BuildException {
 | 
			
		||||
 | 
			
		||||
        super.validateAttributes();
 | 
			
		||||
        if (this.depends == null) {
 | 
			
		||||
            throw new BuildException("missing depends attribute");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void execute()
 | 
			
		||||
        throws BuildException {
 | 
			
		||||
 | 
			
		||||
        if (this.destFile.exists()) {
 | 
			
		||||
            String state;
 | 
			
		||||
            if (this.depends.lastModified() >
 | 
			
		||||
                this.destFile.lastModified())
 | 
			
		||||
            {
 | 
			
		||||
                this.setOverwrite(true);
 | 
			
		||||
                state = "out of date";
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                state = "up to date";
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            log(this.destFile +
 | 
			
		||||
                " " + state + " with " +
 | 
			
		||||
                this.depends);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        super.execute();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public File getDepends() {
 | 
			
		||||
        return this.depends;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setDepends(String depends) {
 | 
			
		||||
        this.depends = new File(depends);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
package org.hyperic.jni;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
 | 
			
		||||
import org.apache.tools.ant.BuildException;
 | 
			
		||||
import org.apache.tools.ant.taskdefs.Copy;
 | 
			
		||||
 | 
			
		||||
public class CopyDependsTask extends Copy {
 | 
			
		||||
 | 
			
		||||
    private File depends;
 | 
			
		||||
 | 
			
		||||
    protected void validateAttributes()
 | 
			
		||||
        throws BuildException {
 | 
			
		||||
 | 
			
		||||
        super.validateAttributes();
 | 
			
		||||
        if (this.depends == null) {
 | 
			
		||||
            throw new BuildException("missing depends attribute");
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void execute()
 | 
			
		||||
        throws BuildException {
 | 
			
		||||
 | 
			
		||||
        if (this.destFile.exists()) {
 | 
			
		||||
            String state;
 | 
			
		||||
            if (this.depends.lastModified() >
 | 
			
		||||
                this.destFile.lastModified())
 | 
			
		||||
            {
 | 
			
		||||
                this.setOverwrite(true);
 | 
			
		||||
                state = "out of date";
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                state = "up to date";
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            log(this.destFile +
 | 
			
		||||
                " " + state + " with " +
 | 
			
		||||
                this.depends);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        super.execute();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public File getDepends() {
 | 
			
		||||
        return this.depends;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void setDepends(String depends) {
 | 
			
		||||
        this.depends = new File(depends);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,81 +1,81 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
 | 
			
		||||
 * This file is part of SIGAR.
 | 
			
		||||
 * 
 | 
			
		||||
 * SIGAR is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms version 2 of the GNU General Public License as
 | 
			
		||||
 * published by the Free Software Foundation. This program is distributed
 | 
			
		||||
 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
			
		||||
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
			
		||||
 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
			
		||||
 * details.
 | 
			
		||||
 * 
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program; if not, write to the Free Software
 | 
			
		||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
			
		||||
 * USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.hyperic.sigar.cmd;
 | 
			
		||||
 | 
			
		||||
import org.hyperic.sigar.win32.EventLog;
 | 
			
		||||
import org.hyperic.sigar.win32.EventLogNotification;
 | 
			
		||||
import org.hyperic.sigar.win32.EventLogRecord;
 | 
			
		||||
import org.hyperic.sigar.win32.EventLogThread;
 | 
			
		||||
import org.hyperic.sigar.win32.Win32Exception;
 | 
			
		||||
 | 
			
		||||
public class EventLogTail {
 | 
			
		||||
 | 
			
		||||
    private static void tail(String name, Tail tail) throws Win32Exception {
 | 
			
		||||
        EventLog log = new EventLog();
 | 
			
		||||
        log.open(name);
 | 
			
		||||
        int max = log.getNumberOfRecords();
 | 
			
		||||
        if (tail.number < max) {
 | 
			
		||||
            max = tail.number;
 | 
			
		||||
        }
 | 
			
		||||
        int last = log.getNewestRecord()+1;
 | 
			
		||||
        int first = last - max;
 | 
			
		||||
 | 
			
		||||
        for (int i=first; i<last; i++) {
 | 
			
		||||
            EventLogRecord record = log.read(i);
 | 
			
		||||
            System.out.println(record);
 | 
			
		||||
        }
 | 
			
		||||
        log.close();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static class TailNotification implements EventLogNotification {
 | 
			
		||||
        public void handleNotification(EventLogRecord event) {
 | 
			
		||||
            System.out.println(event);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public boolean matches(EventLogRecord event) {
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void main(String[] args) throws Exception {
 | 
			
		||||
        Tail tail = new Tail();
 | 
			
		||||
        tail.parseArgs(args);
 | 
			
		||||
 | 
			
		||||
        if (tail.files.size() == 0) {
 | 
			
		||||
            tail.files.add(EventLog.SYSTEM);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for (int i=0; i<tail.files.size(); i++) {
 | 
			
		||||
            String name = (String)tail.files.get(i);
 | 
			
		||||
            tail(name, tail);
 | 
			
		||||
 | 
			
		||||
            if (tail.follow) {
 | 
			
		||||
                TailNotification notifier = new TailNotification();
 | 
			
		||||
                EventLogThread thread = 
 | 
			
		||||
                    EventLogThread.getInstance(name);
 | 
			
		||||
                thread.add(notifier);
 | 
			
		||||
                thread.doStart();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (tail.follow) {
 | 
			
		||||
            System.in.read();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
 | 
			
		||||
 * This file is part of SIGAR.
 | 
			
		||||
 * 
 | 
			
		||||
 * SIGAR is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms version 2 of the GNU General Public License as
 | 
			
		||||
 * published by the Free Software Foundation. This program is distributed
 | 
			
		||||
 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
			
		||||
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
			
		||||
 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
			
		||||
 * details.
 | 
			
		||||
 * 
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program; if not, write to the Free Software
 | 
			
		||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
			
		||||
 * USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.hyperic.sigar.cmd;
 | 
			
		||||
 | 
			
		||||
import org.hyperic.sigar.win32.EventLog;
 | 
			
		||||
import org.hyperic.sigar.win32.EventLogNotification;
 | 
			
		||||
import org.hyperic.sigar.win32.EventLogRecord;
 | 
			
		||||
import org.hyperic.sigar.win32.EventLogThread;
 | 
			
		||||
import org.hyperic.sigar.win32.Win32Exception;
 | 
			
		||||
 | 
			
		||||
public class EventLogTail {
 | 
			
		||||
 | 
			
		||||
    private static void tail(String name, Tail tail) throws Win32Exception {
 | 
			
		||||
        EventLog log = new EventLog();
 | 
			
		||||
        log.open(name);
 | 
			
		||||
        int max = log.getNumberOfRecords();
 | 
			
		||||
        if (tail.number < max) {
 | 
			
		||||
            max = tail.number;
 | 
			
		||||
        }
 | 
			
		||||
        int last = log.getNewestRecord()+1;
 | 
			
		||||
        int first = last - max;
 | 
			
		||||
 | 
			
		||||
        for (int i=first; i<last; i++) {
 | 
			
		||||
            EventLogRecord record = log.read(i);
 | 
			
		||||
            System.out.println(record);
 | 
			
		||||
        }
 | 
			
		||||
        log.close();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private static class TailNotification implements EventLogNotification {
 | 
			
		||||
        public void handleNotification(EventLogRecord event) {
 | 
			
		||||
            System.out.println(event);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        public boolean matches(EventLogRecord event) {
 | 
			
		||||
            return true;
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void main(String[] args) throws Exception {
 | 
			
		||||
        Tail tail = new Tail();
 | 
			
		||||
        tail.parseArgs(args);
 | 
			
		||||
 | 
			
		||||
        if (tail.files.size() == 0) {
 | 
			
		||||
            tail.files.add(EventLog.SYSTEM);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        for (int i=0; i<tail.files.size(); i++) {
 | 
			
		||||
            String name = (String)tail.files.get(i);
 | 
			
		||||
            tail(name, tail);
 | 
			
		||||
 | 
			
		||||
            if (tail.follow) {
 | 
			
		||||
                TailNotification notifier = new TailNotification();
 | 
			
		||||
                EventLogThread thread = 
 | 
			
		||||
                    EventLogThread.getInstance(name);
 | 
			
		||||
                thread.add(notifier);
 | 
			
		||||
                thread.doStart();
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        if (tail.follow) {
 | 
			
		||||
            System.in.read();
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,100 +1,100 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
 | 
			
		||||
 * This file is part of SIGAR.
 | 
			
		||||
 * 
 | 
			
		||||
 * SIGAR is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms version 2 of the GNU General Public License as
 | 
			
		||||
 * published by the Free Software Foundation. This program is distributed
 | 
			
		||||
 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
			
		||||
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
			
		||||
 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
			
		||||
 * details.
 | 
			
		||||
 * 
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program; if not, write to the Free Software
 | 
			
		||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
			
		||||
 * USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.hyperic.sigar.cmd;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.util.Iterator;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import org.hyperic.sigar.SigarException;
 | 
			
		||||
import org.hyperic.sigar.ProcExe;
 | 
			
		||||
import org.hyperic.sigar.win32.Win32;
 | 
			
		||||
import org.hyperic.sigar.win32.FileVersion;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Display process file information.
 | 
			
		||||
 */
 | 
			
		||||
public class FileVersionInfo extends SigarCommandBase {
 | 
			
		||||
 | 
			
		||||
    public FileVersionInfo(Shell shell) {
 | 
			
		||||
        super(shell);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public FileVersionInfo() {
 | 
			
		||||
        super();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected boolean validateArgs(String[] args) {
 | 
			
		||||
        return args.length >= 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getUsageShort() {
 | 
			
		||||
        return "Display file version info";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void output(String[] args) throws SigarException {
 | 
			
		||||
        for (int i=0; i<args.length; i++) {
 | 
			
		||||
            String exe = args[i];
 | 
			
		||||
            if (new File(exe).exists()) {
 | 
			
		||||
                output(exe);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                long[] pids = this.shell.findPids(exe);
 | 
			
		||||
                for (int j=0; j<pids.length; j++) {
 | 
			
		||||
                    try {
 | 
			
		||||
                        output(sigar.getProcExe(pids[j]).getName());
 | 
			
		||||
                    } catch (SigarException e) {
 | 
			
		||||
                        println(exe + ": " + e.getMessage());
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void output(String key, String val) {
 | 
			
		||||
        final int max = 20;
 | 
			
		||||
        int len = max - key.length();
 | 
			
		||||
        StringBuffer sb = new StringBuffer();
 | 
			
		||||
        sb.append("  ").append(key);
 | 
			
		||||
        while (len-- > 0) {
 | 
			
		||||
            sb.append('.');
 | 
			
		||||
        }
 | 
			
		||||
        sb.append(val);
 | 
			
		||||
        println(sb.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void output(String exe) throws SigarException {
 | 
			
		||||
        FileVersion info = Win32.getFileVersion(exe);
 | 
			
		||||
        if (info == null) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        println("Version info for file '" + exe + "':");
 | 
			
		||||
        output("FileVersion", info.getFileVersion());
 | 
			
		||||
        output("ProductVersion", info.getProductVersion());
 | 
			
		||||
        for (Iterator it = info.getInfo().entrySet().iterator();
 | 
			
		||||
             it.hasNext();)
 | 
			
		||||
        {
 | 
			
		||||
            Map.Entry entry = (Map.Entry)it.next();
 | 
			
		||||
            output((String)entry.getKey(), (String)entry.getValue());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void main(String[] args) throws Exception {
 | 
			
		||||
        new FileVersionInfo().processCommand(args);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
 | 
			
		||||
 * This file is part of SIGAR.
 | 
			
		||||
 * 
 | 
			
		||||
 * SIGAR is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms version 2 of the GNU General Public License as
 | 
			
		||||
 * published by the Free Software Foundation. This program is distributed
 | 
			
		||||
 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
			
		||||
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
			
		||||
 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
			
		||||
 * details.
 | 
			
		||||
 * 
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program; if not, write to the Free Software
 | 
			
		||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
			
		||||
 * USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.hyperic.sigar.cmd;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
import java.util.Iterator;
 | 
			
		||||
import java.util.Map;
 | 
			
		||||
import org.hyperic.sigar.SigarException;
 | 
			
		||||
import org.hyperic.sigar.ProcExe;
 | 
			
		||||
import org.hyperic.sigar.win32.Win32;
 | 
			
		||||
import org.hyperic.sigar.win32.FileVersion;
 | 
			
		||||
 | 
			
		||||
/**
 | 
			
		||||
 * Display process file information.
 | 
			
		||||
 */
 | 
			
		||||
public class FileVersionInfo extends SigarCommandBase {
 | 
			
		||||
 | 
			
		||||
    public FileVersionInfo(Shell shell) {
 | 
			
		||||
        super(shell);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public FileVersionInfo() {
 | 
			
		||||
        super();
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    protected boolean validateArgs(String[] args) {
 | 
			
		||||
        return args.length >= 1;
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public String getUsageShort() {
 | 
			
		||||
        return "Display file version info";
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void output(String[] args) throws SigarException {
 | 
			
		||||
        for (int i=0; i<args.length; i++) {
 | 
			
		||||
            String exe = args[i];
 | 
			
		||||
            if (new File(exe).exists()) {
 | 
			
		||||
                output(exe);
 | 
			
		||||
            }
 | 
			
		||||
            else {
 | 
			
		||||
                long[] pids = this.shell.findPids(exe);
 | 
			
		||||
                for (int j=0; j<pids.length; j++) {
 | 
			
		||||
                    try {
 | 
			
		||||
                        output(sigar.getProcExe(pids[j]).getName());
 | 
			
		||||
                    } catch (SigarException e) {
 | 
			
		||||
                        println(exe + ": " + e.getMessage());
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void output(String key, String val) {
 | 
			
		||||
        final int max = 20;
 | 
			
		||||
        int len = max - key.length();
 | 
			
		||||
        StringBuffer sb = new StringBuffer();
 | 
			
		||||
        sb.append("  ").append(key);
 | 
			
		||||
        while (len-- > 0) {
 | 
			
		||||
            sb.append('.');
 | 
			
		||||
        }
 | 
			
		||||
        sb.append(val);
 | 
			
		||||
        println(sb.toString());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void output(String exe) throws SigarException {
 | 
			
		||||
        FileVersion info = Win32.getFileVersion(exe);
 | 
			
		||||
        if (info == null) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
        println("Version info for file '" + exe + "':");
 | 
			
		||||
        output("FileVersion", info.getFileVersion());
 | 
			
		||||
        output("ProductVersion", info.getProductVersion());
 | 
			
		||||
        for (Iterator it = info.getInfo().entrySet().iterator();
 | 
			
		||||
             it.hasNext();)
 | 
			
		||||
        {
 | 
			
		||||
            Map.Entry entry = (Map.Entry)it.next();
 | 
			
		||||
            output((String)entry.getKey(), (String)entry.getValue());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public static void main(String[] args) throws Exception {
 | 
			
		||||
        new FileVersionInfo().processCommand(args);
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,41 +1,41 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
 | 
			
		||||
 * This file is part of SIGAR.
 | 
			
		||||
 * 
 | 
			
		||||
 * SIGAR is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms version 2 of the GNU General Public License as
 | 
			
		||||
 * published by the Free Software Foundation. This program is distributed
 | 
			
		||||
 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
			
		||||
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
			
		||||
 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
			
		||||
 * details.
 | 
			
		||||
 * 
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program; if not, write to the Free Software
 | 
			
		||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
			
		||||
 * USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.hyperic.sigar.test;
 | 
			
		||||
 | 
			
		||||
import org.hyperic.sigar.Sigar;
 | 
			
		||||
import org.hyperic.sigar.SigarNotImplementedException;
 | 
			
		||||
 | 
			
		||||
public class TestSignal extends SigarTestCase {
 | 
			
		||||
 | 
			
		||||
    public TestSignal(String name) {
 | 
			
		||||
        super(name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void testCreate() throws Exception {
 | 
			
		||||
        String[] signals = {
 | 
			
		||||
            "HUP", "INT", "KILL", "QUIT",
 | 
			
		||||
            "TERM", "USR1", "USR2"
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        for (int i=0; i<signals.length; i++) {
 | 
			
		||||
            String sig = signals[i];
 | 
			
		||||
            traceln(sig + "=" + Sigar.getSigNum(sig));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
 | 
			
		||||
 * This file is part of SIGAR.
 | 
			
		||||
 * 
 | 
			
		||||
 * SIGAR is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms version 2 of the GNU General Public License as
 | 
			
		||||
 * published by the Free Software Foundation. This program is distributed
 | 
			
		||||
 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
			
		||||
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
			
		||||
 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
			
		||||
 * details.
 | 
			
		||||
 * 
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program; if not, write to the Free Software
 | 
			
		||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
			
		||||
 * USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.hyperic.sigar.test;
 | 
			
		||||
 | 
			
		||||
import org.hyperic.sigar.Sigar;
 | 
			
		||||
import org.hyperic.sigar.SigarNotImplementedException;
 | 
			
		||||
 | 
			
		||||
public class TestSignal extends SigarTestCase {
 | 
			
		||||
 | 
			
		||||
    public TestSignal(String name) {
 | 
			
		||||
        super(name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void testCreate() throws Exception {
 | 
			
		||||
        String[] signals = {
 | 
			
		||||
            "HUP", "INT", "KILL", "QUIT",
 | 
			
		||||
            "TERM", "USR1", "USR2"
 | 
			
		||||
        };
 | 
			
		||||
 | 
			
		||||
        for (int i=0; i<signals.length; i++) {
 | 
			
		||||
            String sig = signals[i];
 | 
			
		||||
            traceln(sig + "=" + Sigar.getSigNum(sig));
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,64 +1,64 @@
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
 | 
			
		||||
 * This file is part of SIGAR.
 | 
			
		||||
 * 
 | 
			
		||||
 * SIGAR is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms version 2 of the GNU General Public License as
 | 
			
		||||
 * published by the Free Software Foundation. This program is distributed
 | 
			
		||||
 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
			
		||||
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
			
		||||
 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
			
		||||
 * details.
 | 
			
		||||
 * 
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program; if not, write to the Free Software
 | 
			
		||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
			
		||||
 * USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.hyperic.sigar.win32.test;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
 | 
			
		||||
import org.hyperic.sigar.test.SigarTestCase;
 | 
			
		||||
 | 
			
		||||
import org.hyperic.sigar.Sigar;
 | 
			
		||||
import org.hyperic.sigar.SigarException;
 | 
			
		||||
import org.hyperic.sigar.ProcExe;
 | 
			
		||||
import org.hyperic.sigar.win32.Win32;
 | 
			
		||||
import org.hyperic.sigar.win32.FileVersion;
 | 
			
		||||
 | 
			
		||||
public class TestFileVersion extends SigarTestCase {
 | 
			
		||||
 | 
			
		||||
    public TestFileVersion(String name) {
 | 
			
		||||
        super(name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void printExe(long pid) {
 | 
			
		||||
        traceln("\npid=" + pid);        
 | 
			
		||||
 | 
			
		||||
        String name;
 | 
			
		||||
        try {
 | 
			
		||||
            name = getSigar().getProcExe(pid).getName();
 | 
			
		||||
        } catch (SigarException e) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        FileVersion info = Win32.getFileVersion(name);
 | 
			
		||||
        if (info != null) {
 | 
			
		||||
            traceln("exe='" + name + "'");
 | 
			
		||||
            traceln("version=" + info.getProductVersion());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void testCreate() throws Exception {
 | 
			
		||||
        assertTrue(Win32.getFileVersion("DoEsNoTeXist.exe") == null);
 | 
			
		||||
 | 
			
		||||
	long[] pids = getSigar().getProcList();
 | 
			
		||||
 | 
			
		||||
        //go through all just to make sure no crashes
 | 
			
		||||
	for (int i=0; i<pids.length; i++) {
 | 
			
		||||
            printExe(pids[i]);
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
/*
 | 
			
		||||
 * Copyright (C) [2004, 2005, 2006], Hyperic, Inc.
 | 
			
		||||
 * This file is part of SIGAR.
 | 
			
		||||
 * 
 | 
			
		||||
 * SIGAR is free software; you can redistribute it and/or modify
 | 
			
		||||
 * it under the terms version 2 of the GNU General Public License as
 | 
			
		||||
 * published by the Free Software Foundation. This program is distributed
 | 
			
		||||
 * in the hope that it will be useful, but WITHOUT ANY WARRANTY; without
 | 
			
		||||
 * even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 | 
			
		||||
 * PARTICULAR PURPOSE. See the GNU General Public License for more
 | 
			
		||||
 * details.
 | 
			
		||||
 * 
 | 
			
		||||
 * You should have received a copy of the GNU General Public License
 | 
			
		||||
 * along with this program; if not, write to the Free Software
 | 
			
		||||
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
 | 
			
		||||
 * USA.
 | 
			
		||||
 */
 | 
			
		||||
 | 
			
		||||
package org.hyperic.sigar.win32.test;
 | 
			
		||||
 | 
			
		||||
import java.io.File;
 | 
			
		||||
 | 
			
		||||
import org.hyperic.sigar.test.SigarTestCase;
 | 
			
		||||
 | 
			
		||||
import org.hyperic.sigar.Sigar;
 | 
			
		||||
import org.hyperic.sigar.SigarException;
 | 
			
		||||
import org.hyperic.sigar.ProcExe;
 | 
			
		||||
import org.hyperic.sigar.win32.Win32;
 | 
			
		||||
import org.hyperic.sigar.win32.FileVersion;
 | 
			
		||||
 | 
			
		||||
public class TestFileVersion extends SigarTestCase {
 | 
			
		||||
 | 
			
		||||
    public TestFileVersion(String name) {
 | 
			
		||||
        super(name);
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    private void printExe(long pid) {
 | 
			
		||||
        traceln("\npid=" + pid);        
 | 
			
		||||
 | 
			
		||||
        String name;
 | 
			
		||||
        try {
 | 
			
		||||
            name = getSigar().getProcExe(pid).getName();
 | 
			
		||||
        } catch (SigarException e) {
 | 
			
		||||
            return;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        FileVersion info = Win32.getFileVersion(name);
 | 
			
		||||
        if (info != null) {
 | 
			
		||||
            traceln("exe='" + name + "'");
 | 
			
		||||
            traceln("version=" + info.getProductVersion());
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    public void testCreate() throws Exception {
 | 
			
		||||
        assertTrue(Win32.getFileVersion("DoEsNoTeXist.exe") == null);
 | 
			
		||||
 | 
			
		||||
	long[] pids = getSigar().getProcList();
 | 
			
		||||
 | 
			
		||||
        //go through all just to make sure no crashes
 | 
			
		||||
	for (int i=0; i<pids.length; i++) {
 | 
			
		||||
            printExe(pids[i]);
 | 
			
		||||
	}
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,327 +1,327 @@
 | 
			
		||||
/*++
 | 
			
		||||
 | 
			
		||||
Copyright (c) Microsoft Corporation. All rights reserved.
 | 
			
		||||
 | 
			
		||||
Module Name:
 | 
			
		||||
 | 
			
		||||
    iptypes.h
 | 
			
		||||
 | 
			
		||||
--*/
 | 
			
		||||
 | 
			
		||||
#ifndef IP_TYPES_INCLUDED
 | 
			
		||||
#define IP_TYPES_INCLUDED
 | 
			
		||||
 | 
			
		||||
#if _MSC_VER > 1000
 | 
			
		||||
#pragma once
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#pragma warning(push)
 | 
			
		||||
#pragma warning(disable:4201)
 | 
			
		||||
 | 
			
		||||
#include <time.h>
 | 
			
		||||
 | 
			
		||||
// Definitions and structures used by getnetworkparams and getadaptersinfo apis
 | 
			
		||||
 | 
			
		||||
#define MAX_ADAPTER_DESCRIPTION_LENGTH  128 // arb.
 | 
			
		||||
#define MAX_ADAPTER_NAME_LENGTH         256 // arb.
 | 
			
		||||
#define MAX_ADAPTER_ADDRESS_LENGTH      8   // arb.
 | 
			
		||||
#define DEFAULT_MINIMUM_ENTITIES        32  // arb.
 | 
			
		||||
#define MAX_HOSTNAME_LEN                128 // arb.
 | 
			
		||||
#define MAX_DOMAIN_NAME_LEN             128 // arb.
 | 
			
		||||
#define MAX_SCOPE_ID_LEN                256 // arb.
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// types
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
// Node Type
 | 
			
		||||
 | 
			
		||||
#define BROADCAST_NODETYPE              1
 | 
			
		||||
#define PEER_TO_PEER_NODETYPE           2
 | 
			
		||||
#define MIXED_NODETYPE                  4
 | 
			
		||||
#define HYBRID_NODETYPE                 8
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// IP_ADDRESS_STRING - store an IP address as a dotted decimal string
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    char String[4 * 4];
 | 
			
		||||
} IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// IP_ADDR_STRING - store an IP address with its corresponding subnet mask,
 | 
			
		||||
// both as dotted decimal strings
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADDR_STRING {
 | 
			
		||||
    struct _IP_ADDR_STRING* Next;
 | 
			
		||||
    IP_ADDRESS_STRING IpAddress;
 | 
			
		||||
    IP_MASK_STRING IpMask;
 | 
			
		||||
    DWORD Context;
 | 
			
		||||
} IP_ADDR_STRING, *PIP_ADDR_STRING;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// ADAPTER_INFO - per-adapter information. All IP addresses are stored as
 | 
			
		||||
// strings
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_INFO {
 | 
			
		||||
    struct _IP_ADAPTER_INFO* Next;
 | 
			
		||||
    DWORD ComboIndex;
 | 
			
		||||
    char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
 | 
			
		||||
    char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
 | 
			
		||||
    UINT AddressLength;
 | 
			
		||||
    BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
 | 
			
		||||
    DWORD Index;
 | 
			
		||||
    UINT Type;
 | 
			
		||||
    UINT DhcpEnabled;
 | 
			
		||||
    PIP_ADDR_STRING CurrentIpAddress;
 | 
			
		||||
    IP_ADDR_STRING IpAddressList;
 | 
			
		||||
    IP_ADDR_STRING GatewayList;
 | 
			
		||||
    IP_ADDR_STRING DhcpServer;
 | 
			
		||||
    BOOL HaveWins;
 | 
			
		||||
    IP_ADDR_STRING PrimaryWinsServer;
 | 
			
		||||
    IP_ADDR_STRING SecondaryWinsServer;
 | 
			
		||||
    time_t LeaseObtained;
 | 
			
		||||
    time_t LeaseExpires;
 | 
			
		||||
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
 | 
			
		||||
 | 
			
		||||
#ifdef _WINSOCK2API_
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// The following types require Winsock2.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    IpPrefixOriginOther = 0,
 | 
			
		||||
    IpPrefixOriginManual,
 | 
			
		||||
    IpPrefixOriginWellKnown,
 | 
			
		||||
    IpPrefixOriginDhcp,
 | 
			
		||||
    IpPrefixOriginRouterAdvertisement,
 | 
			
		||||
} IP_PREFIX_ORIGIN;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    IpSuffixOriginOther = 0,
 | 
			
		||||
    IpSuffixOriginManual,
 | 
			
		||||
    IpSuffixOriginWellKnown,
 | 
			
		||||
    IpSuffixOriginDhcp,
 | 
			
		||||
    IpSuffixOriginLinkLayerAddress,
 | 
			
		||||
    IpSuffixOriginRandom,
 | 
			
		||||
} IP_SUFFIX_ORIGIN;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    IpDadStateInvalid    = 0,
 | 
			
		||||
    IpDadStateTentative,
 | 
			
		||||
    IpDadStateDuplicate,
 | 
			
		||||
    IpDadStateDeprecated,
 | 
			
		||||
    IpDadStatePreferred,
 | 
			
		||||
} IP_DAD_STATE;
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_UNICAST_ADDRESS {
 | 
			
		||||
    union {
 | 
			
		||||
        ULONGLONG Alignment;
 | 
			
		||||
        struct { 
 | 
			
		||||
            ULONG Length;
 | 
			
		||||
            DWORD Flags;
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    struct _IP_ADAPTER_UNICAST_ADDRESS *Next;
 | 
			
		||||
    SOCKET_ADDRESS Address;
 | 
			
		||||
 | 
			
		||||
    IP_PREFIX_ORIGIN PrefixOrigin;
 | 
			
		||||
    IP_SUFFIX_ORIGIN SuffixOrigin;
 | 
			
		||||
    IP_DAD_STATE DadState;
 | 
			
		||||
 | 
			
		||||
    ULONG ValidLifetime;
 | 
			
		||||
    ULONG PreferredLifetime;
 | 
			
		||||
    ULONG LeaseLifetime;
 | 
			
		||||
} IP_ADAPTER_UNICAST_ADDRESS, *PIP_ADAPTER_UNICAST_ADDRESS;
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
 | 
			
		||||
    union {
 | 
			
		||||
        ULONGLONG Alignment;
 | 
			
		||||
        struct { 
 | 
			
		||||
            ULONG Length;
 | 
			
		||||
            DWORD Flags;
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    struct _IP_ADAPTER_ANYCAST_ADDRESS *Next;
 | 
			
		||||
    SOCKET_ADDRESS Address;
 | 
			
		||||
} IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS;
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
 | 
			
		||||
    union {
 | 
			
		||||
        ULONGLONG Alignment;
 | 
			
		||||
        struct {
 | 
			
		||||
            ULONG Length;
 | 
			
		||||
            DWORD Flags;
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    struct _IP_ADAPTER_MULTICAST_ADDRESS *Next;
 | 
			
		||||
    SOCKET_ADDRESS Address;
 | 
			
		||||
} IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Per-address Flags
 | 
			
		||||
//
 | 
			
		||||
#define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x01
 | 
			
		||||
#define IP_ADAPTER_ADDRESS_TRANSIENT    0x02
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
 | 
			
		||||
    union {
 | 
			
		||||
        ULONGLONG Alignment;
 | 
			
		||||
        struct {
 | 
			
		||||
            ULONG Length;
 | 
			
		||||
            DWORD Reserved;
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    struct _IP_ADAPTER_DNS_SERVER_ADDRESS *Next;
 | 
			
		||||
    SOCKET_ADDRESS Address;
 | 
			
		||||
} IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS;
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_PREFIX {
 | 
			
		||||
    union {
 | 
			
		||||
        ULONGLONG Alignment;
 | 
			
		||||
        struct {
 | 
			
		||||
            ULONG Length;
 | 
			
		||||
            DWORD Flags;
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    struct _IP_ADAPTER_PREFIX *Next;
 | 
			
		||||
    SOCKET_ADDRESS Address;
 | 
			
		||||
    ULONG PrefixLength;
 | 
			
		||||
} IP_ADAPTER_PREFIX, *PIP_ADAPTER_PREFIX;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Per-adapter Flags
 | 
			
		||||
//
 | 
			
		||||
#define IP_ADAPTER_DDNS_ENABLED               0x01
 | 
			
		||||
#define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX    0x02
 | 
			
		||||
#define IP_ADAPTER_DHCP_ENABLED               0x04
 | 
			
		||||
#define IP_ADAPTER_RECEIVE_ONLY               0x08
 | 
			
		||||
#define IP_ADAPTER_NO_MULTICAST               0x10
 | 
			
		||||
#define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x20
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// OperStatus values from RFC 2863
 | 
			
		||||
//
 | 
			
		||||
typedef enum {
 | 
			
		||||
    IfOperStatusUp = 1,
 | 
			
		||||
    IfOperStatusDown,
 | 
			
		||||
    IfOperStatusTesting,
 | 
			
		||||
    IfOperStatusUnknown,
 | 
			
		||||
    IfOperStatusDormant,
 | 
			
		||||
    IfOperStatusNotPresent,
 | 
			
		||||
    IfOperStatusLowerLayerDown
 | 
			
		||||
} IF_OPER_STATUS;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Scope levels from RFC 2373 used with ZoneIndices array.
 | 
			
		||||
//
 | 
			
		||||
typedef enum {
 | 
			
		||||
    ScopeLevelInterface    = 1,
 | 
			
		||||
    ScopeLevelLink         = 2,
 | 
			
		||||
    ScopeLevelSubnet       = 3,
 | 
			
		||||
    ScopeLevelAdmin        = 4,
 | 
			
		||||
    ScopeLevelSite         = 5,
 | 
			
		||||
    ScopeLevelOrganization = 8,
 | 
			
		||||
    ScopeLevelGlobal       = 14
 | 
			
		||||
} SCOPE_LEVEL;
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_ADDRESSES {
 | 
			
		||||
    union {
 | 
			
		||||
        ULONGLONG Alignment;
 | 
			
		||||
        struct {
 | 
			
		||||
            ULONG Length;
 | 
			
		||||
            DWORD IfIndex;
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    struct _IP_ADAPTER_ADDRESSES *Next;
 | 
			
		||||
    PCHAR AdapterName;
 | 
			
		||||
    PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
 | 
			
		||||
    PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
 | 
			
		||||
    PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
 | 
			
		||||
    PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
 | 
			
		||||
    PWCHAR DnsSuffix;
 | 
			
		||||
    PWCHAR Description;
 | 
			
		||||
    PWCHAR FriendlyName;
 | 
			
		||||
    BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
 | 
			
		||||
    DWORD PhysicalAddressLength;
 | 
			
		||||
    DWORD Flags;
 | 
			
		||||
    DWORD Mtu;
 | 
			
		||||
    DWORD IfType;
 | 
			
		||||
    IF_OPER_STATUS OperStatus;
 | 
			
		||||
    DWORD Ipv6IfIndex;
 | 
			
		||||
    DWORD ZoneIndices[16];
 | 
			
		||||
    PIP_ADAPTER_PREFIX FirstPrefix;
 | 
			
		||||
} IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Flags used as argument to GetAdaptersAddresses().
 | 
			
		||||
// "SKIP" flags are added when the default is to include the information.
 | 
			
		||||
// "INCLUDE" flags are added when the default is to skip the information.
 | 
			
		||||
//
 | 
			
		||||
#define GAA_FLAG_SKIP_UNICAST       0x0001
 | 
			
		||||
#define GAA_FLAG_SKIP_ANYCAST       0x0002
 | 
			
		||||
#define GAA_FLAG_SKIP_MULTICAST     0x0004
 | 
			
		||||
#define GAA_FLAG_SKIP_DNS_SERVER    0x0008
 | 
			
		||||
#define GAA_FLAG_INCLUDE_PREFIX     0x0010
 | 
			
		||||
#define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020
 | 
			
		||||
 | 
			
		||||
#endif /* _WINSOCK2API_ */
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// IP_PER_ADAPTER_INFO - per-adapter IP information such as DNS server list.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_PER_ADAPTER_INFO {
 | 
			
		||||
    UINT AutoconfigEnabled;
 | 
			
		||||
    UINT AutoconfigActive;
 | 
			
		||||
    PIP_ADDR_STRING CurrentDnsServer;
 | 
			
		||||
    IP_ADDR_STRING DnsServerList;
 | 
			
		||||
} IP_PER_ADAPTER_INFO, *PIP_PER_ADAPTER_INFO;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// FIXED_INFO - the set of IP-related information which does not depend on DHCP
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    char HostName[MAX_HOSTNAME_LEN + 4] ;
 | 
			
		||||
    char DomainName[MAX_DOMAIN_NAME_LEN + 4];
 | 
			
		||||
    PIP_ADDR_STRING CurrentDnsServer;
 | 
			
		||||
    IP_ADDR_STRING DnsServerList;
 | 
			
		||||
    UINT NodeType;
 | 
			
		||||
    char ScopeId[MAX_SCOPE_ID_LEN + 4];
 | 
			
		||||
    UINT EnableRouting;
 | 
			
		||||
    UINT EnableProxy;
 | 
			
		||||
    UINT EnableDns;
 | 
			
		||||
} FIXED_INFO, *PFIXED_INFO;
 | 
			
		||||
 | 
			
		||||
#ifndef IP_INTERFACE_NAME_INFO_DEFINED
 | 
			
		||||
#define IP_INTERFACE_NAME_INFO_DEFINED
 | 
			
		||||
 | 
			
		||||
typedef struct ip_interface_name_info {
 | 
			
		||||
    ULONG           Index;      // Interface Index
 | 
			
		||||
    ULONG           MediaType;  // Interface Types - see ipifcons.h
 | 
			
		||||
    UCHAR           ConnectionType;
 | 
			
		||||
    UCHAR           AccessType;
 | 
			
		||||
    GUID            DeviceGuid; // Device GUID is the guid of the device
 | 
			
		||||
                                // that IP exposes
 | 
			
		||||
    GUID            InterfaceGuid; // Interface GUID, if not GUID_NULL is the
 | 
			
		||||
                                // GUID for the interface mapped to the device.
 | 
			
		||||
} IP_INTERFACE_NAME_INFO, *PIP_INTERFACE_NAME_INFO;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#pragma warning(pop)
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
/*++
 | 
			
		||||
 | 
			
		||||
Copyright (c) Microsoft Corporation. All rights reserved.
 | 
			
		||||
 | 
			
		||||
Module Name:
 | 
			
		||||
 | 
			
		||||
    iptypes.h
 | 
			
		||||
 | 
			
		||||
--*/
 | 
			
		||||
 | 
			
		||||
#ifndef IP_TYPES_INCLUDED
 | 
			
		||||
#define IP_TYPES_INCLUDED
 | 
			
		||||
 | 
			
		||||
#if _MSC_VER > 1000
 | 
			
		||||
#pragma once
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
extern "C" {
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#pragma warning(push)
 | 
			
		||||
#pragma warning(disable:4201)
 | 
			
		||||
 | 
			
		||||
#include <time.h>
 | 
			
		||||
 | 
			
		||||
// Definitions and structures used by getnetworkparams and getadaptersinfo apis
 | 
			
		||||
 | 
			
		||||
#define MAX_ADAPTER_DESCRIPTION_LENGTH  128 // arb.
 | 
			
		||||
#define MAX_ADAPTER_NAME_LENGTH         256 // arb.
 | 
			
		||||
#define MAX_ADAPTER_ADDRESS_LENGTH      8   // arb.
 | 
			
		||||
#define DEFAULT_MINIMUM_ENTITIES        32  // arb.
 | 
			
		||||
#define MAX_HOSTNAME_LEN                128 // arb.
 | 
			
		||||
#define MAX_DOMAIN_NAME_LEN             128 // arb.
 | 
			
		||||
#define MAX_SCOPE_ID_LEN                256 // arb.
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// types
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
// Node Type
 | 
			
		||||
 | 
			
		||||
#define BROADCAST_NODETYPE              1
 | 
			
		||||
#define PEER_TO_PEER_NODETYPE           2
 | 
			
		||||
#define MIXED_NODETYPE                  4
 | 
			
		||||
#define HYBRID_NODETYPE                 8
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// IP_ADDRESS_STRING - store an IP address as a dotted decimal string
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    char String[4 * 4];
 | 
			
		||||
} IP_ADDRESS_STRING, *PIP_ADDRESS_STRING, IP_MASK_STRING, *PIP_MASK_STRING;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// IP_ADDR_STRING - store an IP address with its corresponding subnet mask,
 | 
			
		||||
// both as dotted decimal strings
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADDR_STRING {
 | 
			
		||||
    struct _IP_ADDR_STRING* Next;
 | 
			
		||||
    IP_ADDRESS_STRING IpAddress;
 | 
			
		||||
    IP_MASK_STRING IpMask;
 | 
			
		||||
    DWORD Context;
 | 
			
		||||
} IP_ADDR_STRING, *PIP_ADDR_STRING;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// ADAPTER_INFO - per-adapter information. All IP addresses are stored as
 | 
			
		||||
// strings
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_INFO {
 | 
			
		||||
    struct _IP_ADAPTER_INFO* Next;
 | 
			
		||||
    DWORD ComboIndex;
 | 
			
		||||
    char AdapterName[MAX_ADAPTER_NAME_LENGTH + 4];
 | 
			
		||||
    char Description[MAX_ADAPTER_DESCRIPTION_LENGTH + 4];
 | 
			
		||||
    UINT AddressLength;
 | 
			
		||||
    BYTE Address[MAX_ADAPTER_ADDRESS_LENGTH];
 | 
			
		||||
    DWORD Index;
 | 
			
		||||
    UINT Type;
 | 
			
		||||
    UINT DhcpEnabled;
 | 
			
		||||
    PIP_ADDR_STRING CurrentIpAddress;
 | 
			
		||||
    IP_ADDR_STRING IpAddressList;
 | 
			
		||||
    IP_ADDR_STRING GatewayList;
 | 
			
		||||
    IP_ADDR_STRING DhcpServer;
 | 
			
		||||
    BOOL HaveWins;
 | 
			
		||||
    IP_ADDR_STRING PrimaryWinsServer;
 | 
			
		||||
    IP_ADDR_STRING SecondaryWinsServer;
 | 
			
		||||
    time_t LeaseObtained;
 | 
			
		||||
    time_t LeaseExpires;
 | 
			
		||||
} IP_ADAPTER_INFO, *PIP_ADAPTER_INFO;
 | 
			
		||||
 | 
			
		||||
#ifdef _WINSOCK2API_
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// The following types require Winsock2.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    IpPrefixOriginOther = 0,
 | 
			
		||||
    IpPrefixOriginManual,
 | 
			
		||||
    IpPrefixOriginWellKnown,
 | 
			
		||||
    IpPrefixOriginDhcp,
 | 
			
		||||
    IpPrefixOriginRouterAdvertisement,
 | 
			
		||||
} IP_PREFIX_ORIGIN;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    IpSuffixOriginOther = 0,
 | 
			
		||||
    IpSuffixOriginManual,
 | 
			
		||||
    IpSuffixOriginWellKnown,
 | 
			
		||||
    IpSuffixOriginDhcp,
 | 
			
		||||
    IpSuffixOriginLinkLayerAddress,
 | 
			
		||||
    IpSuffixOriginRandom,
 | 
			
		||||
} IP_SUFFIX_ORIGIN;
 | 
			
		||||
 | 
			
		||||
typedef enum {
 | 
			
		||||
    IpDadStateInvalid    = 0,
 | 
			
		||||
    IpDadStateTentative,
 | 
			
		||||
    IpDadStateDuplicate,
 | 
			
		||||
    IpDadStateDeprecated,
 | 
			
		||||
    IpDadStatePreferred,
 | 
			
		||||
} IP_DAD_STATE;
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_UNICAST_ADDRESS {
 | 
			
		||||
    union {
 | 
			
		||||
        ULONGLONG Alignment;
 | 
			
		||||
        struct { 
 | 
			
		||||
            ULONG Length;
 | 
			
		||||
            DWORD Flags;
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    struct _IP_ADAPTER_UNICAST_ADDRESS *Next;
 | 
			
		||||
    SOCKET_ADDRESS Address;
 | 
			
		||||
 | 
			
		||||
    IP_PREFIX_ORIGIN PrefixOrigin;
 | 
			
		||||
    IP_SUFFIX_ORIGIN SuffixOrigin;
 | 
			
		||||
    IP_DAD_STATE DadState;
 | 
			
		||||
 | 
			
		||||
    ULONG ValidLifetime;
 | 
			
		||||
    ULONG PreferredLifetime;
 | 
			
		||||
    ULONG LeaseLifetime;
 | 
			
		||||
} IP_ADAPTER_UNICAST_ADDRESS, *PIP_ADAPTER_UNICAST_ADDRESS;
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_ANYCAST_ADDRESS {
 | 
			
		||||
    union {
 | 
			
		||||
        ULONGLONG Alignment;
 | 
			
		||||
        struct { 
 | 
			
		||||
            ULONG Length;
 | 
			
		||||
            DWORD Flags;
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    struct _IP_ADAPTER_ANYCAST_ADDRESS *Next;
 | 
			
		||||
    SOCKET_ADDRESS Address;
 | 
			
		||||
} IP_ADAPTER_ANYCAST_ADDRESS, *PIP_ADAPTER_ANYCAST_ADDRESS;
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_MULTICAST_ADDRESS {
 | 
			
		||||
    union {
 | 
			
		||||
        ULONGLONG Alignment;
 | 
			
		||||
        struct {
 | 
			
		||||
            ULONG Length;
 | 
			
		||||
            DWORD Flags;
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    struct _IP_ADAPTER_MULTICAST_ADDRESS *Next;
 | 
			
		||||
    SOCKET_ADDRESS Address;
 | 
			
		||||
} IP_ADAPTER_MULTICAST_ADDRESS, *PIP_ADAPTER_MULTICAST_ADDRESS;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Per-address Flags
 | 
			
		||||
//
 | 
			
		||||
#define IP_ADAPTER_ADDRESS_DNS_ELIGIBLE 0x01
 | 
			
		||||
#define IP_ADAPTER_ADDRESS_TRANSIENT    0x02
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_DNS_SERVER_ADDRESS {
 | 
			
		||||
    union {
 | 
			
		||||
        ULONGLONG Alignment;
 | 
			
		||||
        struct {
 | 
			
		||||
            ULONG Length;
 | 
			
		||||
            DWORD Reserved;
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    struct _IP_ADAPTER_DNS_SERVER_ADDRESS *Next;
 | 
			
		||||
    SOCKET_ADDRESS Address;
 | 
			
		||||
} IP_ADAPTER_DNS_SERVER_ADDRESS, *PIP_ADAPTER_DNS_SERVER_ADDRESS;
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_PREFIX {
 | 
			
		||||
    union {
 | 
			
		||||
        ULONGLONG Alignment;
 | 
			
		||||
        struct {
 | 
			
		||||
            ULONG Length;
 | 
			
		||||
            DWORD Flags;
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    struct _IP_ADAPTER_PREFIX *Next;
 | 
			
		||||
    SOCKET_ADDRESS Address;
 | 
			
		||||
    ULONG PrefixLength;
 | 
			
		||||
} IP_ADAPTER_PREFIX, *PIP_ADAPTER_PREFIX;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Per-adapter Flags
 | 
			
		||||
//
 | 
			
		||||
#define IP_ADAPTER_DDNS_ENABLED               0x01
 | 
			
		||||
#define IP_ADAPTER_REGISTER_ADAPTER_SUFFIX    0x02
 | 
			
		||||
#define IP_ADAPTER_DHCP_ENABLED               0x04
 | 
			
		||||
#define IP_ADAPTER_RECEIVE_ONLY               0x08
 | 
			
		||||
#define IP_ADAPTER_NO_MULTICAST               0x10
 | 
			
		||||
#define IP_ADAPTER_IPV6_OTHER_STATEFUL_CONFIG 0x20
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// OperStatus values from RFC 2863
 | 
			
		||||
//
 | 
			
		||||
typedef enum {
 | 
			
		||||
    IfOperStatusUp = 1,
 | 
			
		||||
    IfOperStatusDown,
 | 
			
		||||
    IfOperStatusTesting,
 | 
			
		||||
    IfOperStatusUnknown,
 | 
			
		||||
    IfOperStatusDormant,
 | 
			
		||||
    IfOperStatusNotPresent,
 | 
			
		||||
    IfOperStatusLowerLayerDown
 | 
			
		||||
} IF_OPER_STATUS;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Scope levels from RFC 2373 used with ZoneIndices array.
 | 
			
		||||
//
 | 
			
		||||
typedef enum {
 | 
			
		||||
    ScopeLevelInterface    = 1,
 | 
			
		||||
    ScopeLevelLink         = 2,
 | 
			
		||||
    ScopeLevelSubnet       = 3,
 | 
			
		||||
    ScopeLevelAdmin        = 4,
 | 
			
		||||
    ScopeLevelSite         = 5,
 | 
			
		||||
    ScopeLevelOrganization = 8,
 | 
			
		||||
    ScopeLevelGlobal       = 14
 | 
			
		||||
} SCOPE_LEVEL;
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_ADAPTER_ADDRESSES {
 | 
			
		||||
    union {
 | 
			
		||||
        ULONGLONG Alignment;
 | 
			
		||||
        struct {
 | 
			
		||||
            ULONG Length;
 | 
			
		||||
            DWORD IfIndex;
 | 
			
		||||
        };
 | 
			
		||||
    };
 | 
			
		||||
    struct _IP_ADAPTER_ADDRESSES *Next;
 | 
			
		||||
    PCHAR AdapterName;
 | 
			
		||||
    PIP_ADAPTER_UNICAST_ADDRESS FirstUnicastAddress;
 | 
			
		||||
    PIP_ADAPTER_ANYCAST_ADDRESS FirstAnycastAddress;
 | 
			
		||||
    PIP_ADAPTER_MULTICAST_ADDRESS FirstMulticastAddress;
 | 
			
		||||
    PIP_ADAPTER_DNS_SERVER_ADDRESS FirstDnsServerAddress;
 | 
			
		||||
    PWCHAR DnsSuffix;
 | 
			
		||||
    PWCHAR Description;
 | 
			
		||||
    PWCHAR FriendlyName;
 | 
			
		||||
    BYTE PhysicalAddress[MAX_ADAPTER_ADDRESS_LENGTH];
 | 
			
		||||
    DWORD PhysicalAddressLength;
 | 
			
		||||
    DWORD Flags;
 | 
			
		||||
    DWORD Mtu;
 | 
			
		||||
    DWORD IfType;
 | 
			
		||||
    IF_OPER_STATUS OperStatus;
 | 
			
		||||
    DWORD Ipv6IfIndex;
 | 
			
		||||
    DWORD ZoneIndices[16];
 | 
			
		||||
    PIP_ADAPTER_PREFIX FirstPrefix;
 | 
			
		||||
} IP_ADAPTER_ADDRESSES, *PIP_ADAPTER_ADDRESSES;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// Flags used as argument to GetAdaptersAddresses().
 | 
			
		||||
// "SKIP" flags are added when the default is to include the information.
 | 
			
		||||
// "INCLUDE" flags are added when the default is to skip the information.
 | 
			
		||||
//
 | 
			
		||||
#define GAA_FLAG_SKIP_UNICAST       0x0001
 | 
			
		||||
#define GAA_FLAG_SKIP_ANYCAST       0x0002
 | 
			
		||||
#define GAA_FLAG_SKIP_MULTICAST     0x0004
 | 
			
		||||
#define GAA_FLAG_SKIP_DNS_SERVER    0x0008
 | 
			
		||||
#define GAA_FLAG_INCLUDE_PREFIX     0x0010
 | 
			
		||||
#define GAA_FLAG_SKIP_FRIENDLY_NAME 0x0020
 | 
			
		||||
 | 
			
		||||
#endif /* _WINSOCK2API_ */
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// IP_PER_ADAPTER_INFO - per-adapter IP information such as DNS server list.
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
typedef struct _IP_PER_ADAPTER_INFO {
 | 
			
		||||
    UINT AutoconfigEnabled;
 | 
			
		||||
    UINT AutoconfigActive;
 | 
			
		||||
    PIP_ADDR_STRING CurrentDnsServer;
 | 
			
		||||
    IP_ADDR_STRING DnsServerList;
 | 
			
		||||
} IP_PER_ADAPTER_INFO, *PIP_PER_ADAPTER_INFO;
 | 
			
		||||
 | 
			
		||||
//
 | 
			
		||||
// FIXED_INFO - the set of IP-related information which does not depend on DHCP
 | 
			
		||||
//
 | 
			
		||||
 | 
			
		||||
typedef struct {
 | 
			
		||||
    char HostName[MAX_HOSTNAME_LEN + 4] ;
 | 
			
		||||
    char DomainName[MAX_DOMAIN_NAME_LEN + 4];
 | 
			
		||||
    PIP_ADDR_STRING CurrentDnsServer;
 | 
			
		||||
    IP_ADDR_STRING DnsServerList;
 | 
			
		||||
    UINT NodeType;
 | 
			
		||||
    char ScopeId[MAX_SCOPE_ID_LEN + 4];
 | 
			
		||||
    UINT EnableRouting;
 | 
			
		||||
    UINT EnableProxy;
 | 
			
		||||
    UINT EnableDns;
 | 
			
		||||
} FIXED_INFO, *PFIXED_INFO;
 | 
			
		||||
 | 
			
		||||
#ifndef IP_INTERFACE_NAME_INFO_DEFINED
 | 
			
		||||
#define IP_INTERFACE_NAME_INFO_DEFINED
 | 
			
		||||
 | 
			
		||||
typedef struct ip_interface_name_info {
 | 
			
		||||
    ULONG           Index;      // Interface Index
 | 
			
		||||
    ULONG           MediaType;  // Interface Types - see ipifcons.h
 | 
			
		||||
    UCHAR           ConnectionType;
 | 
			
		||||
    UCHAR           AccessType;
 | 
			
		||||
    GUID            DeviceGuid; // Device GUID is the guid of the device
 | 
			
		||||
                                // that IP exposes
 | 
			
		||||
    GUID            InterfaceGuid; // Interface GUID, if not GUID_NULL is the
 | 
			
		||||
                                // GUID for the interface mapped to the device.
 | 
			
		||||
} IP_INTERFACE_NAME_INFO, *PIP_INTERFACE_NAME_INFO;
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#pragma warning(pop)
 | 
			
		||||
 | 
			
		||||
#ifdef __cplusplus
 | 
			
		||||
}
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
#endif
 | 
			
		||||
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user