1 /* 2 * Copyright (C) 2008 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 _NETLINKEVENT_H 17 #define _NETLINKEVENT_H 18 19 #include <sysutils/NetlinkListener.h> 20 21 #define NL_PARAMS_MAX 32 22 23 class NetlinkEvent { 24 int mSeq; 25 char *mPath; 26 int mAction; 27 char *mSubsystem; 28 char *mParams[NL_PARAMS_MAX]; 29 30 public: 31 const static int NlActionUnknown; 32 const static int NlActionAdd; 33 const static int NlActionRemove; 34 const static int NlActionChange; 35 const static int NlActionLinkDown; 36 const static int NlActionLinkUp; 37 const static int NlActionAddressUpdated; 38 const static int NlActionAddressRemoved; 39 const static int NlActionRdnss; 40 const static int NlActionRouteUpdated; 41 const static int NlActionRouteRemoved; 42 43 NetlinkEvent(); 44 virtual ~NetlinkEvent(); 45 46 bool decode(char *buffer, int size, int format = NetlinkListener::NETLINK_FORMAT_ASCII); 47 const char *findParam(const char *paramName); 48 getSubsystem()49 const char *getSubsystem() { return mSubsystem; } getAction()50 int getAction() { return mAction; } 51 52 void dump(); 53 54 protected: 55 bool parseBinaryNetlinkMessage(char *buffer, int size); 56 bool parseAsciiNetlinkMessage(char *buffer, int size); 57 bool parseIfInfoMessage(const struct nlmsghdr *nh); 58 bool parseIfAddrMessage(const struct nlmsghdr *nh); 59 bool parseUlogPacketMessage(const struct nlmsghdr *nh); 60 bool parseRtMessage(const struct nlmsghdr *nh); 61 bool parseNdUserOptMessage(const struct nlmsghdr *nh); 62 }; 63 64 #endif 65