PhysicalNetwork.h 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. /*
  2. * Copyright (C) 2014 The Android Open Source Project
  3. *
  4. * Licensed under the Apache License, Version 2.0 (the "License");
  5. * you may not use this file except in compliance with the License.
  6. * You may obtain a copy of the License at
  7. *
  8. * http://www.apache.org/licenses/LICENSE-2.0
  9. *
  10. * Unless required by applicable law or agreed to in writing, software
  11. * distributed under the License is distributed on an "AS IS" BASIS,
  12. * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13. * See the License for the specific language governing permissions and
  14. * limitations under the License.
  15. */
  16. #ifndef NETD_SERVER_PHYSICAL_NETWORK_H
  17. #define NETD_SERVER_PHYSICAL_NETWORK_H
  18. #include "Network.h"
  19. #include "Permission.h"
  20. namespace android {
  21. namespace net {
  22. class PhysicalNetwork : public Network {
  23. public:
  24. class Delegate {
  25. public:
  26. virtual ~Delegate();
  27. virtual int addFallthrough(const std::string& physicalInterface,
  28. Permission permission) WARN_UNUSED_RESULT = 0;
  29. virtual int removeFallthrough(const std::string& physicalInterface,
  30. Permission permission) WARN_UNUSED_RESULT = 0;
  31. };
  32. PhysicalNetwork(unsigned netId, Delegate* delegate);
  33. virtual ~PhysicalNetwork();
  34. // These refer to permissions that apps must have in order to use this network.
  35. Permission getPermission() const;
  36. int setPermission(Permission permission) WARN_UNUSED_RESULT;
  37. int addAsDefault() WARN_UNUSED_RESULT;
  38. int removeAsDefault() WARN_UNUSED_RESULT;
  39. private:
  40. Type getType() const override;
  41. int addInterface(const std::string& interface) override WARN_UNUSED_RESULT;
  42. int removeInterface(const std::string& interface) override WARN_UNUSED_RESULT;
  43. int destroySocketsLackingPermission(Permission permission);
  44. void invalidateRouteCache(const std::string& interface);
  45. Delegate* const mDelegate;
  46. Permission mPermission;
  47. bool mIsDefault;
  48. };
  49. } // namespace net
  50. } // namespace android
  51. #endif // NETD_SERVER_PHYSICAL_NETWORK_H