1* /* 2* * Copyright 2021 Google LLC 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* 17* #pragma once 18* 19* #include <net_iface.h> 20* 21* #include <vector> 22* 23* namespace mock 24* { 25* 26* class IFace : public net::IFaceBase 27* { 28* public: 29* IFace() : net::IFaceBase("mock0") 30* {} 31* explicit IFace(const std::string& name) : net::IFaceBase(name) 32* {} 33* int bind_sock(int sockfd, struct sockaddr_ll* saddr) const override; 34* 35* mutable std::vector<int> bound_socks; 36* int index; 37* mutable short flags = 0; 38* 39* private: 40* int ioctl_sock(int sockfd, int request, struct ifreq* ifr) const override; 41* int ioctl(int request, struct ifreq* ifr) const override; 42* }; 43* 44* } // namespace mock 45*