| #!/usr/bin/python | |
| # -- coding: utf-8 -- | |
| # Licensed to the Apache Software Foundation (ASF) under one | |
| # or more contributor license agreements. See the NOTICE file | |
| # distributed with this work for additional information | |
| # regarding copyright ownership. The ASF licenses this file | |
| # to you under the Apache License, Version 2.0 (the | |
| # "License"); you may not use this file except in compliance | |
| # with the License. You may obtain a copy of the License at | |
| # | |
| # http://www.apache.org/licenses/LICENSE-2.0 | |
| # | |
| # Unless required by applicable law or agreed to in writing, | |
| # software distributed under the License is distributed on an | |
| # "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY | |
| # KIND, either express or implied. See the License for the | |
| # specific language governing permissions and limitations | |
| # under the License. | |
| from cs.CsHelper import * | |
| from cs.CsRoute import CsRoute | |
| from cs.CsRule import CsRule | |
| def main(argv): | |
| if len(argv) != 3: | |
| exit(1) | |
| pubip = argv[1] | |
| prinet = argv[2] | |
| pubdev = get_device(pubip) | |
| if pubdev == "": | |
| exit(1) | |
| list = execute("ip -o -f inet addr show %s | awk '/scope global/ {print $4}'" % pubdev) | |
| if len(list) != 1: | |
| exit(1) | |
| pubnet = list[0] | |
| csroute = CsRoute() | |
| csroute.add_table(pubdev) | |
| csrule = CsRule(pubdev) | |
| csrule.addRule("from %s to %s" % (pubnet, prinet)) | |
| cmd = "%s dev %s table %s" % (prinet, pubdev, csroute.get_tablename(pubdev)) | |
| csroute.set_route(cmd) | |
| if __name__ == '__main__': | |
| main(sys.argv) |