[libvirt-users] Recommended change for the networking page in wiki

BJ taylors2004 at gmail.com
Fri Jun 12 15:29:28 UTC 2015


So should I go ahead and make the changes to the script that I suggested?

Thanks,
BJ

On Mon, Jun 8, 2015 at 3:21 PM, Eric Blake <eblake at redhat.com> wrote:

> On 06/08/2015 02:43 PM, Laine Stump wrote:
> >> However, if I changed the destination address from "anywhere" to the
> >> IP of the host machine, the problem resolved. So I change the script
> >> to as follows. (Changes are highlighted. For some reason the original
> >> script didn't work using /bin/sh, but it did with /bin/bash, so I
> >> changed that too).
> >
> > I don't know for sure, but my guess is that this line:
> >
> >   length=$(( ${#Host_port[@]} - 1 ))
>
> Correct - that line is a bashism, and is not portable when /bin/sh is dash.
>
> >
> > which was added by vgerris in order to support forwarding of multiple
> > ports, could be what's causing the incompatibility (that wasn't in the
> > original, simpler version of the script, written by me.)
> >
> >>
> >> *#!/bin/bash*
> >> # used some from advanced script to have multiple ports: use an equal
> >> number of guest and host ports
> >>
> >> Guest_name=xxxxxxx
> >> Guest_ipaddr=xxx.xxx.xxx.xx
> >> *Host_ipaddr=xxx.xxx.xxx.xx*
> >> Host_port=( '80' '443' )
> >> Guest_port=( '80' '443' )
>
> In fact, these two lines are also bashisms.  All the more reason to
> require bash.
>
> >> length=$(( ${#Host_port[@]} - 1 ))
> >> if [ "${1}" = "${Guest_name}" ]; then
> >>    if [ "${2}" = "stopped" -o "${2}" = "reconnect" ]; then
>
> test ... -o ... (also spelled [ ... -o ... ]) is not portable, even on
> bash.  There are some expressions that are completely ambiguous on how
> to be parsed, when -o is in the mix.  It is better to spell it: [ ... ]
> || [ ... ] (that is, use the shell's || instead of test's -o to do the
> conjunction).
>
> >>        for i in `seq 0 $length`; do
>
> seq is not portable outside of GNU/Linux systems.
>
> >> Lastly, I should note that I am using Ubuntu 14.04, both for the host
> >> and guest.
>
> Yep, that's a system that uses dash for /bin/sh.
>
> >>
> >> I'm also curious as to why this is considered a hack method. It states
> >> in the wiki that "This method is a hack", but it doesn't express why.
> >
> > I consider it a hack because:
> >
> > 1) It requires the IP address of the guest to be known before the guest
> > is started, so either you need to guess the guest's IP (if the guest is
> > getting its IP address via dhcp) or configured the guest IP address in
> > multiple places.
>
> Although recent work has been made to get libvirt to add an API that
> queries the guest for its IP address, once the guest is running.
>
> --
> Eric Blake   eblake redhat com    +1-919-301-3266
> Libvirt virtualization library http://libvirt.org
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listman.redhat.com/archives/libvirt-users/attachments/20150612/a4ad351f/attachment.htm>


More information about the libvirt-users mailing list