Erwan Velu [Wed, 18 Feb 2009 20:18:15 +0000 (21:18 +0100)]
hdt: Moving hdt from sample to its own directory
Erwan Velu [Wed, 18 Feb 2009 19:53:06 +0000 (20:53 +0100)]
hdt: Bump version
Erwan Velu [Mon, 16 Feb 2009 15:41:57 +0000 (16:41 +0100)]
hdt: We have to iterate & copy the vendor name to all matching pci devices as all pci devices might not have a matching vendor/product id. This will help us having the proper vendor device with an unknown product.
Erwan Velu [Mon, 16 Feb 2009 15:05:35 +0000 (16:05 +0100)]
hdt: Fixing error message
Erwan Velu [Mon, 16 Feb 2009 15:01:11 +0000 (16:01 +0100)]
hdt: Fixing typo
Erwan Velu [Mon, 16 Feb 2009 14:58:31 +0000 (15:58 +0100)]
hdt: Removing static dmitable, it have to be in the s_dmi structure Making dmi_iterate quieter Relocating hdt' submenus
Erwan Velu [Mon, 16 Feb 2009 13:14:42 +0000 (14:14 +0100)]
hdt: Adding Syslinux & About menu
Erwan Velu [Mon, 16 Feb 2009 12:11:42 +0000 (13:11 +0100)]
hdt: Adding more defined values for pci components Enabling mulitple kernel modules per pci device Updating pcitest
Erwan Velu [Mon, 16 Feb 2009 10:17:28 +0000 (11:17 +0100)]
hdt: Returning ENOPCIIDS and ENOMODULESPCIMAP when pci.ids and modules.pcidmap files are missing
Erwan Velu [Sun, 15 Feb 2009 20:28:43 +0000 (21:28 +0100)]
hdt: More snprintf Use statusbar to display content
Erwan Velu [Sun, 15 Feb 2009 09:25:52 +0000 (10:25 +0100)]
hdt: Fix typo
Erwan Velu [Fri, 13 Feb 2009 21:06:22 +0000 (22:06 +0100)]
hdt: First code review by Sebastien Gonzalve
Erwan Velu [Fri, 13 Feb 2009 20:30:22 +0000 (21:30 +0100)]
hdt: More comments using #ifdef ATA for useless code until I found how to manage ata
Erwan Velu [Fri, 13 Feb 2009 19:19:00 +0000 (20:19 +0100)]
hdt: Increasing default number of menu. When having lots of PCI devices, this default value was too small Special Thanks to Antoine Ginies for showing that issue
Erwan Velu [Fri, 13 Feb 2009 19:18:39 +0000 (20:18 +0100)]
hdt: Using SUBMENULEN for realocated menus
Erwan Velu [Fri, 13 Feb 2009 19:13:21 +0000 (20:13 +0100)]
hdt: Bump version 0.1.3 Improving menu's content (thx to antoine ginies) Cleaning useless variables Adding more info during hdt startup We now count the number of menu & the number of pci devices Improving display by moving submenu
Erwan Velu [Fri, 13 Feb 2009 14:04:29 +0000 (15:04 +0100)]
hdt: Improving PCI menu display
Erwan Velu [Fri, 13 Feb 2009 12:17:03 +0000 (13:17 +0100)]
hdt: Adding kernel menu Removing beep on timeout Adjusting infobar to STATLEN Adding version display PCI scanning must be in the WITH_PCI ifdef
Erwan Velu [Fri, 13 Feb 2009 12:15:17 +0000 (13:15 +0100)]
hdt: Adjusting values to a match a default screen
Erwan Velu [Fri, 13 Feb 2009 12:13:22 +0000 (13:13 +0100)]
hdt: Improving performances by not computing product ids when the vendor doesn't exist on the local system.
Removing useless break() that prevent other com32 module to load
Erwan Velu [Thu, 12 Feb 2009 20:36:55 +0000 (21:36 +0100)]
hdt: Removing useless stuff Adding bench on memory
Erwan Velu [Thu, 12 Feb 2009 20:04:18 +0000 (21:04 +0100)]
hdt: Improving detection speed by skipping uncessary lines
Erwan Velu [Thu, 12 Feb 2009 19:50:35 +0000 (20:50 +0100)]
hdt: No need to only copy vendor name
Erwan Velu [Thu, 12 Feb 2009 19:43:09 +0000 (20:43 +0100)]
hdt: Improving disk detection
Erwan Velu [Thu, 12 Feb 2009 15:29:28 +0000 (16:29 +0100)]
hdt: Preliminary support for disks
Erwan Velu [Wed, 11 Feb 2009 22:49:15 +0000 (23:49 +0100)]
hdt: Fixing device parameter structure
Erwan Velu [Wed, 11 Feb 2009 22:22:51 +0000 (23:22 +0100)]
hdt: Initial harddrive detection
Erwan Velu [Wed, 11 Feb 2009 22:21:46 +0000 (23:21 +0100)]
hdt: Performance optimisations : avoiding hex_to_int in pci_domain loops
Erwan Velu [Wed, 11 Feb 2009 19:23:36 +0000 (20:23 +0100)]
hdt: Improving memory detection Adding battery detection
Erwan Velu [Wed, 11 Feb 2009 19:21:05 +0000 (20:21 +0100)]
hdt: Adding battery detection in DMI Improving memory detection
Erwan Velu [Wed, 11 Feb 2009 13:39:23 +0000 (14:39 +0100)]
hdt: Adding memory information
Erwan Velu [Tue, 10 Feb 2009 20:47:52 +0000 (21:47 +0100)]
hdt: Adding class name
Erwan Velu [Tue, 10 Feb 2009 20:08:24 +0000 (21:08 +0100)]
hdt: Adding get_class_name_from_pci_ids to grab class name from the pciids
Erwan Velu [Tue, 10 Feb 2009 20:01:09 +0000 (21:01 +0100)]
hdt: Improving clean target
Erwan Velu [Tue, 10 Feb 2009 17:53:02 +0000 (18:53 +0100)]
hdt: Adding PCI & DMI detection Main function must remain simple
Erwan Velu [Tue, 10 Feb 2009 17:52:07 +0000 (18:52 +0100)]
hdt: Removing useless define
Erwan Velu [Tue, 10 Feb 2009 17:51:03 +0000 (18:51 +0100)]
hdt: Increasing default values to allow big items (needed for hdt)
Erwan Velu [Tue, 10 Feb 2009 17:48:02 +0000 (18:48 +0100)]
hdt: Clean must includes libclean target
Erwan Velu [Tue, 10 Feb 2009 14:55:45 +0000 (15:55 +0100)]
hdt: Fixing typo
Erwan Velu [Tue, 10 Feb 2009 12:47:55 +0000 (13:47 +0100)]
hdt: Removing useless printf
Erwan Velu [Mon, 9 Feb 2009 22:25:28 +0000 (23:25 +0100)]
hdt: Fixing cpu structure to prevent conflict on s_cpu_flags
Erwan Velu [Mon, 9 Feb 2009 22:21:39 +0000 (23:21 +0100)]
hdt: First release
Erwan Velu [Mon, 9 Feb 2009 20:09:01 +0000 (21:09 +0100)]
hdt: Updating cpuid code to match upstream code
H. Peter Anvin [Thu, 26 Feb 2009 04:58:12 +0000 (20:58 -0800)]
gPXE: remove obsolete and useless file
H. Peter Anvin [Tue, 24 Feb 2009 23:37:24 +0000 (15:37 -0800)]
bcopy32: move descriptor count into ecx after reload
After having reloaded the descriptor buffer, we divide the byte count
to get a descriptor count. That descriptor count belongs in ECX, not
in EAX.
H. Peter Anvin [Sun, 22 Feb 2009 04:49:08 +0000 (20:49 -0800)]
pxelinux: workaround for old versions of NASM
Old versions of NASM would miscompile forward EQU references. In this
case, fixing that problem is easy, so just do it.
H. Peter Anvin [Thu, 19 Feb 2009 05:36:59 +0000 (21:36 -0800)]
entrydump: trivial program to probe PXE entry conditions
Small debugging hack program to probe the PXE stack entry
conditions. This is mostly useful when developing a PXE stack,
but might possibly be handy for finding workarounds for a stack,
too.
H. Peter Anvin [Thu, 19 Feb 2009 05:11:55 +0000 (21:11 -0800)]
syslinux_derivative_info(): use the buffer we already have
Use the data buffer already set aside for syslinux_derivative_info().
H. Peter Anvin [Thu, 19 Feb 2009 05:08:56 +0000 (21:08 -0800)]
Constructed data objects can't be common; hack derivative_info
- Constructed data objects can't be common. Earlier version of
gcc didn't if the objects were explicitly listed extern, but
newer ones need an explicit __attribute__((nocommon)) or
-fno-common.
- Make syslinux_derivative_info() save the entire reply.
H. Peter Anvin [Thu, 19 Feb 2009 05:07:56 +0000 (21:07 -0800)]
getcwd.c: need <string.h>
getcwd.c needs <string.h>
H. Peter Anvin [Wed, 18 Feb 2009 23:29:30 +0000 (15:29 -0800)]
pxelinux: InitStack is only 16-bit seg:off
H. Peter Anvin [Wed, 18 Feb 2009 23:27:24 +0000 (15:27 -0800)]
pxelinux: simplify the detection of the API structure
Simplify some of the code in the detection of the API structure.
Based on things discovered while porting this code to gPXE.
H. Peter Anvin [Wed, 18 Feb 2009 23:11:51 +0000 (15:11 -0800)]
kbdmap.c: clean up stealth whitespace
Michael Brown [Wed, 18 Feb 2009 04:34:51 +0000 (20:34 -0800)]
Simple "cmd" module to issue a CLI command
A simple "cmd" COM32 module, which only echoes a CLI command. This is
mostly useful when running on an alternate CLI, e.g. on top of the
native gPXE COMBOOT interface.
H. Peter Anvin [Wed, 18 Feb 2009 04:17:17 +0000 (20:17 -0800)]
Update gPXE to version 0.9.6+
277b84c6e7d49f3cf01c855007f591de8c7cb75f
Update gPXE to version 0.9.6+, from commit
277b84c6e7d49f3cf01c855007f591de8c7cb75f in the main gPXE repository.
The only differences is src/config/general.h which has a few protocols
added, and src/arch/i386/prefix/boot1a.S which was called boot1a.s in
the upstream repository.
Vicente Jimenez Aguilar [Tue, 17 Feb 2009 09:30:01 +0000 (10:30 +0100)]
syslinux.txt: document -r (for RAID) option and bootsecfile
Document the new -r (for RAID) option and bootsecfile as pointed out
by Gert Hulselmans.
-r (RAID) option is described correctly in the man page, so I cut and
paste this description here.
bootsecfile parameter perhaps needs more explanation.
H. Peter Anvin [Tue, 17 Feb 2009 06:53:49 +0000 (22:53 -0800)]
doc/comboot.txt: update to reflect dir branch now in mainline
The "dir" branch has been promoted to mainline, so make the
documentation reflect that.
H. Peter Anvin [Tue, 17 Feb 2009 06:52:01 +0000 (22:52 -0800)]
Merge branch 'dir'
H. Peter Anvin [Tue, 17 Feb 2009 05:11:36 +0000 (21:11 -0800)]
pxelinux: compactify the getting cached packets message
Slightly compactify the getting cached packets messages, by putting
them all on one line.
H. Peter Anvin [Tue, 17 Feb 2009 05:02:23 +0000 (21:02 -0800)]
pxelinux: Minimum size for PXENV+ is 0x28 bytes
The minimum size for the PXENV+ structure is 0x28 bytes (for PXE
1.x/2.0); the size will be 0x2C if the !PXE pointer is provided.
H. Peter Anvin [Tue, 17 Feb 2009 04:54:39 +0000 (20:54 -0800)]
pxelinux: clean up and correct the entry point search
Clean up and bug fixes of the entry point search. Verify that all
methods work, and print the one we eventually used.
Gene Cumm [Sun, 15 Feb 2009 22:26:37 +0000 (17:26 -0500)]
COM32 module: Read-Only shell
Well, here's the read-only shell (rosh) that I've been working on.
It's functional but still quite rough. My primary intention of
posting it at this time is such that people have an easy way to
demonstrate to themselves that the library calls I made work.
This should apply as a patch to the head of the "dir" branch and the
patch for c_cflag/c_lflag. The patch is only needed for Linux(without
it, segfaults will occur). I've designed it to compile as a COM32
module and Linux binary when using GNU C (as Syslinux currently
requires GNU C, if I read the Makefiles correctly).
H. Peter Anvin [Mon, 16 Feb 2009 00:35:11 +0000 (16:35 -0800)]
Merge branch 'master' into dir
Gene Cumm [Sun, 15 Feb 2009 22:24:49 +0000 (17:24 -0500)]
COM32 libutil: Fix error in flags in console_ansi_std(void)
ICANON and ECHO were applied to the control flags not local flags.
If ICANON or ECHO were applied to a serial port on Linux on the x86
architecture, this would change the serial ports baud rate.
From my /usr/include/bits/termios.h (select in-order lines):
/* c_cflag bit meaning */
#define B150 0000005
#define B300 0000007
#define B9600 0000015
#define B38400 0000017
/* c_lflag bits */
#define ICANON 0000002
#define ECHO 0000010
The different baud rates are defined here. If someone set the baud
rate to 9600 and set ICANON on c_cflag, it should change the baud rate
to 38400, dropping communication. Another example is if someone set
the baud rate to 150 the set ICANON and ECHO on c_cflag, it should
change the baud to 38400. If I am interpreting the rest of the file
correctly, a bitmask covering all of the bits used in c_cflag for the
baud rate is 0010017.
Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Mon, 16 Feb 2009 00:32:12 +0000 (16:32 -0800)]
ifcpu64: fix handing with less than three arguments
Due to a silly coding error, when passed with only two arguments we
would use them in order 1 -- 2 -- 1 instead of 1 -- 2 -- 2 as was
intended. Fix.
Reported-by: Luciano Miguel Ferreira Rocha <strange@nsk.no-ip.org>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Thu, 12 Feb 2009 00:44:17 +0000 (16:44 -0800)]
find-mingw: handle the names used in Fedora 10+
Handle the names used in Fedora, now when Fedora includes MinGW32 in
the standard distribution.
H. Peter Anvin [Wed, 11 Feb 2009 06:39:52 +0000 (22:39 -0800)]
ldlinux: move es manipulation into ucs2_to_cp
If currently the only caller of ucs2_to_cp wants to use ES, we might
as well move the ES set/restore into ucs2_to_cp.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Wed, 11 Feb 2009 06:37:16 +0000 (22:37 -0800)]
ldlinux: readdir: trivial optimization
Trivially optimize the readdir code
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Wed, 11 Feb 2009 06:22:23 +0000 (22:22 -0800)]
ldlinux: fix interface to ucs2_to_cp
The interface to ucs2_to_cp has changed slightly, it now returns ZF=0
on failure, not CF=1.
H. Peter Anvin [Wed, 11 Feb 2009 06:17:12 +0000 (22:17 -0800)]
Merge branch 'charset' into dir
Gene Cumm [Wed, 11 Feb 2009 03:18:18 +0000 (22:18 -0500)]
COM32 API: Add functions for directory use
COM32: Add directory functions getcwd(), opendir(), readdir() and closedir().
This depends on the patch that I just submitted creating the COMBOOT API calls.
Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Olivier Korn [Tue, 10 Feb 2009 10:23:08 +0000 (11:23 +0100)]
Fix minor errors in keytab-lilo
H. Peter Anvin wrote:
> Thanks for the warning. I have updated keytab-lilo in the git tree with
> keytab-lilo.pl from LILO 22.8.
Thank you H. Peter. I just checked it and the new version doesn't work
"out of the box". It says...
syntax error at keytab-lilo line 4, near "eval "
Execution of keytab-lilo aborted due to compilation errors.
Furthermore, after correcting lines 3 and 4 (which are responsible of
the above error), keyboard maps can't be found (by loadkeys utility)
because of an added bad extension (.map instead of .kmap).
Attached is a patch I wrote in order to make it fully work (apply it
against the version of keytab-lilo which is now in the git tree).
H. Peter Anvin [Tue, 10 Feb 2009 06:53:35 +0000 (22:53 -0800)]
Update keytab-lilo from LILO 22.8
Gene Cumm [Sun, 8 Feb 2009 14:36:59 +0000 (09:36 -0500)]
COMBOOT API: Add calls for directory functions; Implement for FAT
COMBOOT API: Add calls for directory functions; Implement most only
for FAT (SYSLINUX).
Uses INT 22h AX= 001Fh, 0020h, 0021h and 0022h to prepare for the
COM32 C functions getcwd(), opendir(), readdir(), and closedir(),
respectively. INT22h, AX=001Fh will return a valid value for all
variants. INT22h, AX= 0020h, 0021h, and 0022h are only implemented
for SYSLINUX while other variants will call comapi_err for these 3.
Signed-off-by: Gene Cumm <gene.cumm@gmail.com>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Wed, 4 Feb 2009 06:09:45 +0000 (22:09 -0800)]
kbdmap.c32: new module to load a keyboard map dynamically
Load a new keyboard map dynamically
H. Peter Anvin [Wed, 4 Feb 2009 05:41:21 +0000 (21:41 -0800)]
Add comboot interface to access the keyboard remapping table
Add a comboot interface to access the keyboard remapping table,
which can be used for either querying or changing the keyboard
map.
H. Peter Anvin [Sat, 31 Jan 2009 22:58:17 +0000 (14:58 -0800)]
parseconfig.inc: use "skipline" where appropriate
Use "skipline" where appropriate instead of reading into the trackbuf.
H. Peter Anvin [Sat, 31 Jan 2009 22:53:25 +0000 (14:53 -0800)]
Make sure we eat the input when ignoring a DEFAULT command
Make sure we eat the rest of the input line when we encounter a
DEFAULT command that is to be ignored because we have a UI command
already. Do this by making skipline a subroutine.
Based on a patch by Sebastian Hebszt <herbszt@gmx.de>, although
substantially modified.
H. Peter Anvin [Mon, 26 Jan 2009 02:53:04 +0000 (18:53 -0800)]
Merge branch 'ui'
Conflicts:
NEWS
H. Peter Anvin [Mon, 26 Jan 2009 02:52:01 +0000 (18:52 -0800)]
Call the next version 3.74
H. Peter Anvin [Mon, 26 Jan 2009 02:20:17 +0000 (18:20 -0800)]
Bump copyright year to 2009
H. Peter Anvin [Mon, 26 Jan 2009 02:13:41 +0000 (18:13 -0800)]
Document the config.c32 module
H. Peter Anvin [Mon, 26 Jan 2009 01:23:32 +0000 (17:23 -0800)]
Reorganize the codepage handling to allow ucs2 -> codepage conversion
Reorganize the codepage handling to make it easier to do ucs2 ->
codepage conversion, this will be used for a future directory lister.
H. Peter Anvin [Mon, 26 Jan 2009 01:13:43 +0000 (17:13 -0800)]
Merge branch 'master' into ui
H. Peter Anvin [Mon, 26 Jan 2009 01:10:39 +0000 (17:10 -0800)]
config.c32: new module to just load a configuration file
Trivial module to load a new configuration file from the command
line.
Sebastian Herbszt [Sun, 14 Dec 2008 17:35:07 +0000 (18:35 +0100)]
Fix the new "UI" directive
The new directive doesn't seem to work here. Looks like DefaultLevel is never
changed:
core/parseconfig.inc:pc_default: cmp ax,[DefaultLevel]
core/parseconfig.inc:DefaultLevel dw 0 ; The current level of default
core/ui.inc: cmp word [DefaultLevel],1 ; Active UI statement?
H. Peter Anvin [Thu, 11 Dec 2008 22:59:36 +0000 (14:59 -0800)]
Add new "UI" directive instead of abusing the DEFAULT directive
Add a new "UI" directive to specify a user interface module, instead
of abusing the DEFAULT directive. This allows the DEFAULT directive
to be used for setting the default, even when the menu system is
enabled.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Mon, 1 Dec 2008 21:22:46 +0000 (13:22 -0800)]
PXELINUX: local domain is option 15, not option 16
The local domain name is option 15, not option 16. Fix.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Mon, 1 Dec 2008 21:21:47 +0000 (13:21 -0800)]
core/Makefile: fix dependency generation with old versions of NASM
Fix dependency generation with certain old versions of NASM, which
omitted the '\n' between dependency lines.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Ralf Ertzinger [Mon, 20 Oct 2008 16:35:36 +0000 (18:35 +0200)]
mboot.c: prefer ELF header over multiboot header
If a loaded kernel is in ELF format and contains a multiboot header indicating
valid relocation information, prefer the informations from the ELF header.
This is in violation of the Multiboot spec, but it's the way GRUB does
things and Solaris kernels rely on this behaviour.
Signed-of-by: Ralf Ertzinger <ralf@skytale.net>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Sun, 19 Oct 2008 21:23:03 +0000 (14:23 -0700)]
mboot.c32: add <stdint.h> and <stdbool.h>
We need <stdbool.h>; we might as well add <stdint.h> as well.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Sun, 19 Oct 2008 21:21:31 +0000 (14:21 -0700)]
NEWS: Document mboot.c32 -solaris
H. Peter Anvin [Sun, 19 Oct 2008 21:20:53 +0000 (14:20 -0700)]
mboot.c32: reorganize print messages
Reorganize the mboot.c32 Solaris print messages slightly.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Sun, 19 Oct 2008 21:16:32 +0000 (14:16 -0700)]
mboot.c32: change DHCP_ACK_SIZE to 2048
Change DHCP_ACK_SIZE to 2048 just to prevent some systems from doing
stupid things.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Ralf Ertzinger [Sun, 19 Oct 2008 21:08:27 +0000 (14:08 -0700)]
mboot.c32: add Solaris mode
Add a "Solaris" mode to mboot.c32, which mimics a nonstandard
extension to Multiboot used by Solaris' pxeboot program.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Wed, 15 Oct 2008 15:52:54 +0000 (08:52 -0700)]
MEMDISK: in safeint mode, don't bother testing for unchanged INT 15h
In safeint mode, don't bother testing for unchanged INT 15h. It
points back at ourselves, anyway, and we end up doing, in the end, the
same thing as the safeint stub would do.
Furthermore, the test was broken for years, and so this is actually
closer to what we originally tested.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Sergey Vlasov [Wed, 15 Oct 2008 11:39:54 +0000 (15:39 +0400)]
memdisk: fix check for unchanged INT 15h handler in safeint mode
Signed-off-by: Sergey Vlasov <vsu@altlinux.ru>
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Wed, 15 Oct 2008 01:05:28 +0000 (18:05 -0700)]
com32: make _Exit just an ordinary symbol
Make _Exit just an ordinary symbol which aliases _exit. This avoids
some versions of gcc complaining about the inline, which is rather
unnecessary anyway.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
Dag Wieers [Wed, 15 Oct 2008 00:34:57 +0000 (02:34 +0200)]
Older binutils wants parens around macros
Older versions of gcc/binutils apparently really want parentheses
around macro arguments.
Signed-off-by: H. Peter Anvin <hpa@zytor.com>
H. Peter Anvin [Wed, 15 Oct 2008 00:56:15 +0000 (17:56 -0700)]
NEWS: document naming policy change
Signed-off-by: H. Peter Anvin <hpa@zytor.com>