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