connect_vpn should probably have a different name since calling connect_vpn(false) is actually a disconnect action.  If you want to stick with the true/false argument (the 'up' arg), maybe call the method 'change_vpn_status' or something?  Tho it's still not clear what passing a true or false argument is really going to do.  I would recommend actually changing this method to accept the vpn name and the status as arguments, much like the 'ifconfig' command, which would make the method more portable.  This would make it easy, for example, if you wanted to accept a list of VPNs instead of just one in the module options:

```ruby
  def vpn_change_state(vpn_name, state)
    case state
    when :up
      header = "Connecting to VPN: #{vpn_name}"
      connection_state = STR_CONNECTED
      connection_unnecessary = "#{vpn_name} already connected"
    when :down
      header = "Disconnecting from VPN: #{vpn_name}"
      connection_state = STR_DISCONNECTED
      connection_unnecessary = "#{vpn_name} already disconnected"
    else
      raise ArgumentError.new("VPN state argument must be :up or :down")
    end

    print_status(header)
    data = get_vpn_list
    identifier = nil
    data.lines do |line|
      line.strip!
      #...
      # see my comments below regarding the checks for the 'split' calls
    end # end data.lines loop
  end # end of vpn_change_state method
```