#!/usr/bin/python

import sys
import dbus

def make_variant(string):
	return dbus.String(string, variant_level=1)

def print_usage():
	print "Usage: %s <service> [off|dhcp|manual <address> [netmask] [gateway]]" % (sys.argv[0])


if (len(sys.argv) < 3):
	print_usage()
	sys.exit(1)

bus = dbus.SystemBus()
path = "/net/connman/service/" + sys.argv[1]
service = dbus.Interface(bus.get_object('net.connman', path),
					'net.connman.Service')

properties = service.GetProperties()

print "Setting method %s for %s" % (sys.argv[2], sys.argv[1])

ipv4_configuration = { "Method": make_variant(sys.argv[2]) }
if (len(sys.argv) > 3):
	ipv4_configuration["Address"] = make_variant(sys.argv[3])
if (len(sys.argv) > 4):
	ipv4_configuration["Netmask"] = make_variant(sys.argv[4])
if (len(sys.argv) > 5):
        ipv4_configuration["Gateway"] = make_variant(sys.argv[5])

service.SetProperty("IPv4.Configuration", ipv4_configuration)
print "New IPv4.Configuration: ", ipv4_configuration

print
